# Đề tài: tìm số pi @@

1. Thành viên mới
Ngày gia nhập
11 2017
Bài viết
4

## tìm số pi @@

cảm ơn mọi người nhé, mình nộp bài luôn rồi.
Code:
```#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>

double RandomCoordinate()
{
return rand() / (RAND_MAX + 1.0);
}
/****************************************************************************
*****************************************************************************/
int main(int argc, char* argv[])
{
int m;//number of decimal points precision for pi
int n;//times to find pi
double pi;
double x, y;//Coordinates of a point
int hit;//number of points inside circle

printf("enter number of decimal points precision for pi: \n");
scanf("%d", &m);
n = pow(10, m);
printf("value of n = %d\n", n);
srand(time(NULL));

for (int j = 0; j <= n; j++)
{
hit = 0;

for (int i = 0; i <= n; i++)
{
x = RandomCoordinate();
y = RandomCoordinate();
if (sqrt(x*x + y*y) <= r)
hit += 1;
}

pi = ((double)hit / (double)n) * 4;
printf("pi= %f ", pi);
}

getchar();
return 0;
}```

2. Code của bạn, đã chữa.
C Code:
1. #include <stdio.h>
2. #include <stdlib.h>
3. #include <time.h>
4. #include <math.h>
5.
6. #include <inttypes.h>
7. /**********************************************************************/
8. typedef struct { uint64_t state;  uint64_t inc; } pcg32_random_t;
9. //----------------------------------------------------------------------
10. uint32_t pcg32_random_r(pcg32_random_t* rng)
11. {
12.     uint64_t oldstate = rng->state;
13.     rng->state = oldstate * 6364136223846793005ULL + (rng->inc|1);
14.     uint32_t xorshifted = ((oldstate >> 18u) ^ oldstate) >> 27u;
15.     uint32_t rot = oldstate >> 59u;
16.     return (xorshifted >> rot) | (xorshifted << ((-rot) & 31));
17. }
18. /**********************************************************************/
19. static pcg32_random_t xrand = {1987,2999}, yrand = {2017,3001};
20. //----------------------------------------------------------------------
21. double RandomCoordX()
22. {
23.     return (double)pcg32_random_r(&xrand) / 0x100000000;
24. }
25. //----------------------------------------------------------------------
26. double RandomCoordY()
27. {
28.     return (double)pcg32_random_r(&yrand) / 0x100000000;
29. }
30. /**********************************************************************/
31. int main(int argc, char* argv[])
32. {
33.     int m;//number of decimal points precision for pi
34.     long long int n;//times to find pi
36.     double pi;
37.     double x, y;//Coordinates of a point
38.     long long int hit;//number of points inside circle
39.
40.     printf("enter number of decimal points precision for pi:");
41.     scanf("%d", &m);
42.     n = pow(10, 2*(m+1));
43.     printf("value of n = %.0lf\n", (double)n);
44.     //srand(time(NULL));
45.
46.     for (int j = 0; j < 100; j++)
47.     {
48.         hit = 0;
49.         for (long long int i = 0; i < n; i++)
50.         {
51.             x = RandomCoordX();
52.             y = RandomCoordY();
53.             if (x*x + y*y <= r*r)
54.                 hit += 1;
55.         }
56.         pi = ((double)hit / (double)n) * 4;
57.         printf("%7.*f ", m, pi);
58.     }
59.     getchar();
60.     return 0;
61. }
Ví dụ 1
Code:
```enter number of decimal points precision for pi:1
value of n = 10000
3.1     3.1     3.1     3.2     3.1     3.2     3.2     3.1     3.1     3.1
3.1     3.1     3.2     3.1     3.1     3.1     3.2     3.1     3.2     3.2
3.1     3.1     3.2     3.1     3.1     3.1     3.1     3.1     3.1     3.2
3.1     3.1     3.1     3.1     3.2     3.1     3.1     3.1     3.1     3.1
3.1     3.1     3.1     3.1     3.2     3.1     3.1     3.1     3.1     3.1
3.2     3.1     3.2     3.1     3.2     3.1     3.1     3.2     3.2     3.1
3.1     3.1     3.2     3.1     3.2     3.2     3.1     3.2     3.1     3.2
3.1     3.1     3.1     3.1     3.2     3.1     3.1     3.1     3.1     3.1
3.2     3.1     3.1     3.1     3.1     3.2     3.1     3.1     3.2     3.2
3.2     3.1     3.1     3.1     3.1     3.1     3.1     3.1     3.1     3.2```
Ví dụ 2
Code:
```enter number of decimal points precision for pi:2
value of n = 1000000
3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14
3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14
3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14
3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14
3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14
3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14
3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14
3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14
3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14
3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14    3.14```
Ví dụ 3
Code:
```enter number of decimal points precision for pi:3
value of n = 100000000
3.142   3.142   3.141   3.141   3.142   3.142   3.142   3.141   3.141   3.142
3.142   3.142   3.141   3.141   3.142   3.142   3.142   3.142   3.142   3.142
3.141   3.142   3.142   3.142   3.142   3.142   3.142   3.141   3.142   3.141
3.142   3.142   3.142   3.142   3.142   3.141   3.142   3.142   3.142   3.142
3.142   3.142   3.141   3.142   3.142   3.142   3.142   3.141   3.141   3.142
3.142   3.142   3.142   3.142   3.142   3.142   3.142   3.142   3.142   3.142
3.142   3.142   3.141   3.142   3.142   3.141   3.142   3.141   3.141   3.142
3.141   3.142   3.142   3.142   3.142   3.141   3.142   3.141   3.141   3.142
3.141   3.141   3.141   3.142   3.142   3.141   3.142   3.142   3.142   3.142
3.141   3.142   3.142   3.142   3.142   3.142   3.141   3.141   3.142   3.142```
Ví dụ 4
Code:
```enter number of decimal points precision for pi:4
value of n = 10000000000
3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416
3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416
3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416
3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416
3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416
3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416
3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416
3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416
3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416
3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416  3.1416```
Đã được chỉnh sửa lần cuối bởi Ada : 20-11-2017 lúc 11:12 AM. Lý do: int -> long long int

Trang 4 trên tổng số 4 Đầu tiên ... 234

#### Quyền hạn của bạn

• Bạn không thể gửi đề tài mới
• Bạn không thể gửi bài trả lời
• Bạn không thể gửi các đính kèm
• Bạn không thể chỉnh sửa bài viết của bạn