Trang 4 trên tổng số 4 Đầu tiênĐầu tiên ... 234
Từ 31 tới 33 trên tổng số 33 kết quả

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

  1. #31
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    394

    Mặc định tìm số pi @@

    Vu lap mieng em là thế nào.

    Không ai nói gì thêm về chủ đề bởi vì đã nói đủ rồi. Tên phương pháp tính, code phương pháp tính, ước lượng sai số, thậm chí cả giá trị thật của Pi chính xác đến mấy chục chữ số, đều lộ hết rồi.

    Nhưng nếu ai có kết quả khác, thì mình và có lẽ cả mọi người cũng đều muốn nghe.

    Nếu là kết quả thực nghiệm thì càng tốt. Vì mục đích của bài tập này, theo mình, là giới thiệu sự mô phỏng thí nghiệm khoa học, ở mức độ đơn giản phù hợp với sinh viên chưa học qua thống kê toán. Nghĩa là không chỉ Pi mà cả độ chính xác đều phải xác định bằng thực nghiệm, hơn là bằng tính toán.

    EDIT: Lại còn có cả bản dịch đề bài từ tiếng Anh sang tiếng Việt, đúng từng câu từng chữ. Thế là quá đầy đủ.
    Đã được chỉnh sửa lần cuối bởi Ada : 16-11-2017 lúc 02:48 PM.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  2. #32
    Ngày gia nhập
    11 2017
    Bài viết
    4

    cảm ơn mọi người nhé, mình nộp bài luôn rồi.
    đây là task L :v.
    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
    	int r = 1;//radius
    	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;
    }

  3. #33
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    394

    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
    35.     int r = 1;//radius
    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Đầ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