Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 14 kết quả

Đề tài: Tạo biến ngẫu nhiên

  1. #1
    Ngày gia nhập
    12 2011
    Nơi ở
    497 Hòa Hảo, P.7, Q.10, Tp Hồ Chí Minh
    Bài viết
    0

    Mặc định Tạo biến ngẫu nhiên

    Giúp em viết code của bài này với:
    a) Tạo ngẫu nhiên n tọa độ (x,y,z) với x thuộc (-a,a), y thuộc (-b,b), z thuộc (-c,c).
    b) Xác định các điêm trên nằm trong hay nằm ngoài elipsoid x^2/a^2 + y^2/b^2 + z^2/c^2 = 1.
    c) Tính tỷ số số điểm nằm trong và n điểm tạo được nhân với thể tích khối lập phương a.b.c, ta có giá trị xấp xỉ của elipsoid (phương pháp Monte Carlo).


    Em làm câu a và b nhu sau nhưng thực sự em chưa biết cách sử dụng hàm rand:


    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    #include<time.h>
    main()
    {
    float a,b,c;
    int n,i;

    double x,y,z;

    printf("I/ Nhap cac ban kinh cua elipsoid:\n");
    printf("\t Nhap ban kinh theo truc hoanh: a= "); scanf("%f",&a); printf("\n");
    printf("\t Nhap ban kinh theo truc tung: b= "); scanf("%f",&b); printf("\n");
    printf("\t Nhap ban kinh theo truc cao: c= "); scanf("%f",&c); printf("\n");
    printf("II/ Nhap so diem can xet: n= "); scanf("%d",&n);
    {for (i=1;i<=n;i++)
    {

    x=rand()/(double)RAND_MAX * 2*a-a;
    y=rand()/(double)RAND_MAX * 2*a-a;
    z=rand()/(double)RAND_MAX * 2*a-a);






    int p,q;//p-so diem trong, q-so diem ngoai
    p=0,q=0;


    if (((x)^2)/a^2)+((y)^2)/b^2)+((z)^2)/c^2)<=1)
    p++;
    if (((x)^2)/a^2)+((y)^2)/b^2)+((z)^2)/c^2)>1)
    q++;


    printf("so diem nam trong elipsoid la: %d\n",p);
    printf("so diem nam ngoai elipsoid la: %d\n",q);

    }
    }
    return(0);

    }

  2. #2
    Ngày gia nhập
    11 2010
    Nơi ở
    hell
    Bài viết
    165

    rand thế chứ pn mún sử dụng sao nữa
    HT117-5277

  3. #3
    Ngày gia nhập
    11 2011
    Nơi ở
    /home/tancuong
    Bài viết
    32

    Trích dẫn Nguyên bản được gửi bởi viettinh93 Xem bài viết
    Giúp em viết code của bài này với:
    a) Tạo ngẫu nhiên n tọa độ (x,y,z) với x thuộc (-a,a), y thuộc (-b,b), z thuộc (-c,c).
    b) Xác định các điêm trên nằm trong hay nằm ngoài elipsoid x^2/a^2 + y^2/b^2 + z^2/c^2 = 1.
    c) Tính tỷ số số điểm nằm trong và n điểm tạo được nhân với thể tích khối lập phương a.b.c, ta có giá trị xấp xỉ của elipsoid (phương pháp Monte Carlo).


    Em làm câu a và b nhu sau nhưng thực sự em chưa biết cách sử dụng hàm rand:


    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    #include<time.h>
    main()
    {
    float a,b,c;
    int n,i;

    double x,y,z;

    printf("I/ Nhap cac ban kinh cua elipsoid:\n");
    printf("\t Nhap ban kinh theo truc hoanh: a= "); scanf("%f",&a); printf("\n");
    printf("\t Nhap ban kinh theo truc tung: b= "); scanf("%f",&b); printf("\n");
    printf("\t Nhap ban kinh theo truc cao: c= "); scanf("%f",&c); printf("\n");
    printf("II/ Nhap so diem can xet: n= "); scanf("%d",&n);
    {for (i=1;i<=n;i++)
    {

    x=rand()/(double)RAND_MAX * 2*a-a;
    y=rand()/(double)RAND_MAX * 2*a-a;
    z=rand()/(double)RAND_MAX * 2*a-a);






    int p,q;//p-so diem trong, q-so diem ngoai
    p=0,q=0;


    if (((x)^2)/a^2)+((y)^2)/b^2)+((z)^2)/c^2)<=1)
    p++;
    if (((x)^2)/a^2)+((y)^2)/b^2)+((z)^2)/c^2)>1)
    q++;


    printf("so diem nam trong elipsoid la: %d\n",p);
    printf("so diem nam ngoai elipsoid la: %d\n",q);

    }
    }
    return(0);

    }
    Cần dùng srand() để khởi tạo nó:


    C Code:
    1. #include<stdio.h>
    2. #include<stdlib.h>
    3. #include<math.h>
    4. #include<time.h>
    5. main()
    6. {
    7.     float a,b,c;
    8.     int n,i;
    9.        
    10.         double x,y,z;
    11.  
    12.     printf("I/  Nhap cac ban kinh cua elipsoid:\n");
    13.         printf("\t Nhap ban kinh theo truc hoanh: a=  "); scanf("%f",&a); printf("\n");
    14.         printf("\t Nhap ban kinh theo truc tung:  b=  "); scanf("%f",&b); printf("\n");
    15.         printf("\t Nhap ban kinh theo truc cao:   c=  "); scanf("%f",&c); printf("\n");
    16.     printf("II/ Nhap so diem can xet: n= "); scanf("%d",&n);
    17.         {for (i=1;i<=n;i++)
    18.             {
    19.                 srand(time(NULL));
    20.                 x=rand()/(double)RAND_MAX * 2*a-a;
    21.                 srand(time(1));
    22.                 y=rand()/(double)RAND_MAX * 2*a-a;
    23.                 srand(time(2));
    24.                 z=rand()/(double)RAND_MAX * 2*a-a);
    25.            
    26.                    
    27.            
    28.        
    29.        
    30.        
    31.             int p,q;//p-so diem trong, q-so diem ngoai
    32.             p=0,q=0;
    33.                
    34.                    
    35.                         if (((x)^2)/a^2)+((y)^2)/b^2)+((z)^2)/c^2)<=1)
    36.                             p++;
    37.                         if (((x)^2)/a^2)+((y)^2)/b^2)+((z)^2)/c^2)>1)
    38.                             q++;
    39.                        
    40.                    
    41.                     printf("so diem nam trong elipsoid la:   %d\n",p);
    42.                     printf("so diem nam ngoai elipsoid la:   %d\n",q);
    43.                    
    44.             }
    45.         }
    46.         return(0);
    47.                            
    48. }

  4. #4
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    srand chỉ cần gọi 1 lần thôi, bỏ vào vòng lặp làm gì?

  5. #5
    Ngày gia nhập
    12 2011
    Nơi ở
    497 Hòa Hảo, P.7, Q.10, Tp Hồ Chí Minh
    Bài viết
    0

    mấy anh chị giúp em với, chương trình vẫn ko chạy được.

  6. #6
    Ngày gia nhập
    02 2011
    Nơi ở
    Thủ Đức
    Bài viết
    18

    Mặc định Tạo biến ngẫu nhiên

    Anh xem chạy được không nha, chưa test lun hi ^^
    C++ Code:
    1. // Test.cpp : Defines the entry point for the console application.
    2. //
    3.  
    4. #include "stdafx.h"  
    5. #include <stdio.h>
    6. #include <math.h>
    7. #include <conio.h>
    8.  
    9. //-------------------------------------
    10. int Random(int a, int b)
    11. // tao so ngau nhieu trong [a, b]
    12. {
    13.     return rand()%(b - a) + a + 1;
    14. }
    15.  
    16. //-------------------------------------
    17. int _tmain(int argc, _TCHAR* argv[])
    18. {
    19.     float   a,b,c;
    20.     int     n,i;
    21.     double  x,y,z;
    22.  
    23.     srand(time(NULL)); // gieo hat giong 1 lan trong chuong trinh la du
    24.  
    25.     printf("I/  Nhap cac ban kinh cua elipsoid:\n");
    26.     printf("\t Nhap ban kinh theo truc hoanh: a =  ");  scanf("%f",&a); printf("\n");
    27.     printf("\t Nhap ban kinh theo truc tung:  b =  ");  scanf("%f",&b); printf("\n");
    28.     printf("\t Nhap ban kinh theo truc cao:   c =  ");  scanf("%f",&c); printf("\n");
    29.     printf("II/ Nhap so diem can xet: n = ");           scanf("%d",&n);
    30.  
    31.     for (i = 0; i <= n; i++)
    32.     {
    33.         x = Random(-a, a);
    34.         y = Random(-b, b);
    35.         z = Random(-c, c);  
    36.  
    37.         int p = 0; // p-so diem trong
    38.         int q = 0; // q-so diem ngoai
    39.  
    40.         if (((x)^2)/a^2)+((y)^2)/b^2)+((z)^2)/c^2)<=1)
    41.             p++;
    42.         if (((x)^2)/a^2)+((y)^2)/b^2)+((z)^2)/c^2)>1)
    43.             q++;
    44.  
    45.         printf("so diem nam trong elipsoid la:   %d\n",p);
    46.         printf("so diem nam ngoai elipsoid la:   %d\n",q);
    47.  
    48.     }
    49.  
    50.     return 0;
    51. }
    http://forums.congdongcviet.com/signaturepics/sigpic78119_1.gif

    hãy nhảy như k có ai nhìn...
    hãy hát như k có ai nghe...
    hãy làm việc như k cần 1 thứ gì hết...
    và hãy sốg coi như hôm nay là ngày cuối cùg.

  7. #7
    Ngày gia nhập
    12 2011
    Nơi ở
    497 Hòa Hảo, P.7, Q.10, Tp Hồ Chí Minh
    Bài viết
    0

    em xài c-free nên cái thư viện stdafx.h nó ko có.

  8. #8
    Ngày gia nhập
    12 2011
    Nơi ở
    497 Hòa Hảo, P.7, Q.10, Tp Hồ Chí Minh
    Bài viết
    0

    Nhờ mấy anh chị giúp đỡ nên em viết lại được chương trình này, nhưng ko hiểu sao số điểm nằm ngoài lúc nào cũng bằng số điểm tạo ngẫu nhiên:
    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    #include<time.h>
    main()
    {
    int p,q;//p-so diem trong, q-so diem ngoai
    p=0,q=0;
    int a,b,c,d;
    int n,i;

    int x[100],y[100],z[100];

    printf("I/ Nhap cac ban kinh cua elipsoid:\n");
    printf("\t Nhap ban kinh theo truc hoanh: a= "); scanf("%f",&a); printf("\n");
    printf("\t Nhap ban kinh theo truc tung: b= "); scanf("%f",&b); printf("\n");
    printf("\t Nhap ban kinh theo truc cao: c= "); scanf("%f",&c); printf("\n");
    printf("II/ Nhap so diem can xet: n= "); scanf("%d",&n);


    {for (i=1;i<=n;i++)
    {

    x[i]=rand()/(float)RAND_MAX * 2*d-d;

    y[i]=rand()/(float)RAND_MAX * 2*d-d;

    z[i]=rand()/(float)RAND_MAX * 2*d-d;




    if ((((x[i])^2)/a^2)+(((y[i])^2)/b^2)+(((z[i])^2)/c^2)<=1)
    p++;
    else
    q++;

    }
    printf("so diem nam trong elipsoid la: %d\n",p);
    printf("so diem nam ngoai elipsoid la: %d\n",q);

    }

    return(0);

    }

  9. #9
    Ngày gia nhập
    02 2011
    Nơi ở
    Thủ Đức
    Bài viết
    18

    Anh có thể bỏ dòng
    C++ Code:
    1. #include "stdafx.h"
    và sửa
    C++ Code:
    1. int _tmain(int argc, _TCHAR* argv[])
    2.  
    3. // thành
    4.  
    5. int main()
    http://forums.congdongcviet.com/signaturepics/sigpic78119_1.gif

    hãy nhảy như k có ai nhìn...
    hãy hát như k có ai nghe...
    hãy làm việc như k cần 1 thứ gì hết...
    và hãy sốg coi như hôm nay là ngày cuối cùg.

  10. #10
    Ngày gia nhập
    11 2010
    Bài viết
    589

    Trích dẫn Nguyên bản được gửi bởi llvllr_supermaric Xem bài viết
    Anh có thể bỏ dòng
    C++ Code:
    1. #include "stdafx.h"
    và sửa
    C++ Code:
    1. int _tmain(int argc, _TCHAR* argv[])
    2.  
    3. // thành
    4.  
    5. int main()
    Cái hàm Random của bạn chỉ sinh ra được số nguyên, không hay lắm.

    Trích dẫn Nguyên bản được gửi bởi viettinh93
    if ((((x[i])^2)/a^2)+(((y[i])^2)/b^2)+(((z[i])^2)/c^2)<=1)
    Mấy cái ^ này để làm gì vậy ?
    Đã được chỉnh sửa lần cuối bởi boss14420 : 27-12-2011 lúc 01:08 AM.

Các đề tài tương tự

  1. Tạo biến ngẫu nhiên kiểu float sử dụng hàm rand() trong C/C++ như thế nào?
    Gửi bởi 50902116 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 24
    Bài viết cuối: 27-02-2014, 04:35 PM
  2. Lập trình C Hàm tạo số ngẫu nhiên | Cách nhập giá trị ngẫu nhiên cho ma trận?
    Gửi bởi chuong01 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 15
    Bài viết cuối: 13-08-2012, 09:43 PM
  3. Bài tập C Tạo ngẫu nhiên mảng 2 chiều vuông 4X4 với các phần tử tạo ngẫu nhiên trong đoạn[0,50]
    Gửi bởi truongtrungviet trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 16
    Bài viết cuối: 16-04-2011, 08:06 AM
  4. Cách xây dựng hàm tạo số ngẫu nhiên?
    Gửi bởi buingochuy trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 09-09-2010, 03:51 PM
  5. In ra ngẫu nhiên n số bé hơn x cho trước
    Gửi bởi Taylaptrinh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 30-03-2008, 11:42 AM

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