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ố 16 kết quả

Đề tài: Hàm tạo số ngẫu nhiên | Cách nhập giá trị ngẫu nhiên cho ma trận?

  1. #1
    Ngày gia nhập
    03 2009
    Bài viết
    523

    Mặc định Hàm tạo số ngẫu nhiên | Cách nhập giá trị ngẫu nhiên cho ma trận?

    Chỉ em hàm tạo số ngẫu nhiên và cách nhập giá trị ngẫu nhiên cho ma trận
    Trong sách viết đó là hàm randomize() và random()
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <math.h>
    4. #include <iomanip.h>
    5. #define n 3
    6. void main()
    7. { int i, j; int A[i] [j];
    8. for (i = 1; i <= n; i++)
    9.     for (j = 1; j <= n; j++)
    10.         {randomize(); A[i][j] = random();
    11. printf("A[i][j] = %d  \n", A[i][j];}
    12. getch();}

  2. #2
    Ngày gia nhập
    08 2008
    Nơi ở
    Liên Bang Nga
    Bài viết
    46

    Hàm randomize() và random(int number) hay rand() ... nằm trong thư viện
    strlib.h
    randomize() sẽ gán cho random(int number) một giá trị ngẫu nhiên nằm trong
    phạm vi (0..number-1)
    Code:
    Example:
    
    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>
    
    /* prints a random number in the range 0 to 99 */
    int main(void)
    {
       randomize();
       printf("Random number in the 0-99 range: %d\n", random (100));
       return 0;
    }
    Vì kiểu trả về của rand() là int, nên giá trị của nó nằm trong khoảng 0...2^32-1
    Code:
    Example:
    
    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>
    
    int main(void)
    {
       int i;
    
       randomize();
       printf("Ten random numbers from 0 to 99\n\n");
       for(i=0; i<10; i++)
           printf("%d\n", rand() % 100);
       return 0;
    }
    Xem thêm ghi chú của từng hàm:
    Code:
    randomize()                       <STDLIB.H>
     Macro that initializes random number generator
    
     Declaration:
     void randomize(void);
    
     Remarks:
    randomize initializes the random number generator with a random value.
    
    Because randomize is implemented as a macro that calls the time function
    prototyped in TIME.H, you should include TIME.H when you use this routine.
    
     Return Value:  None
    Code:
     rand()                           <STDLIB.H>
      Random number generator
    
     Declaration:  int rand(void);
    
     Remarks:
    rand uses a multiplicative congruential random number generator with period
    232 to return successive pseudo-random numbers in the range 0 to RAND_MAX.
    
     Return Value:
    rand returns the generated pseudo-random number.
    Code:
    random()                          <STDLIB.H>
      Macro that returns an integer
    
     Declaration:
      Macro:    random(num);
      Function: int random(int num);
    
     Remarks:
    random returns a random number between 0 and (num-1).
    
    random(num) is a macro defined in STDLIB.H.
    
     Return Value:
    Returns an integer between 0 and (num - 1).
    Tôi thường thích những cái gì mà tôi không bao giờ có được...

  3. #3
    No Avatar
    satthu Khách

    Anh lienthang ơi, em dùng C-Freddeeer chạy C, nhưng trong đó không dùng hàm randomize() hay random(), chỉ có rand(). Chạy Example 2 của anh thì lần nào cũng ra 10 số, các số đó không có thay đổi gì cả???
    Đã được chỉnh sửa lần cuối bởi satthu : 25-03-2009 lúc 06:41 AM.

  4. #4
    Ngày gia nhập
    02 2009
    Bài viết
    9

    Trích dẫn Nguyên bản được gửi bởi satthu Xem bài viết
    Anh lienthang ơi, em dùng C-Freddeeer chạy C, nhưng trong đó không dùng hàm randomize() hay random(), chỉ có rand(). Chạy Example 2 của anh thì lần nào cũng ra 10 số, các số đó không có thay đổi gì cả???
    Không có hàm random hay randomize thì dùng rand cũng được. Muốn tạo các số ngẫu nhiên từ 0 đến num-1 thì chỉ cần gọi rand()%num là được

  5. #5
    Ngày gia nhập
    02 2009
    Bài viết
    9

    Để tránh trường hợp lần nào cũng chạy ra 10 số cũ như bạn nói, thì có thể làm cho các số ngẫu nhiên thay đổi theo thời gian. Mình không nhớ rõ hàm này trong C, bạn tự tìm lấy trong time.h nhé.

  6. #6
    Ngày gia nhập
    03 2009
    Bài viết
    523

    Mặc định Hàm tạo số ngẫu nhiên | Cách nhập giá trị ngẫu nhiên cho ma trận?

    [QUOTE=lienthang;78573]Hàm randomize() và random(int number) hay rand() ... nằm trong thư viện
    strlib.h
    randomize() sẽ gán cho random(int number) một giá trị ngẫu nhiên nằm trong
    phạm vi (0..number-1)
    Code:
    Example:
    
    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>
    
    /* prints a random number in the range 0 to 99 */
    int main(void)
    {
       randomize();
       printf("Random number in the 0-99 range: %d\n", random (100));
       return 0;
    }
    Vì kiểu trả về của rand() là int, nên giá trị của nó nằm trong khoảng 0...2^32-1
    C Code:
    1. Example:
    2.  
    3. #include <stdlib.h>
    4. #include <stdio.h>
    5. #include <time.h>
    6.  
    7. int main(void)
    8. {
    9.    int i;
    10.  
    11.    randomize();
    12.    printf("Ten random numbers from 0 to 99\n\n");
    13.    for(i=0; i<10; i++)
    14.        printf("%d\n", rand() % 100);
    15.    return 0;
    16. }
    code của anh ko chạy dc???
    'randomize' : undeclared identifier

  7. #7
    Ngày gia nhập
    11 2008
    Bài viết
    116

    Trích dẫn Nguyên bản được gửi bởi chuong01 Xem bài viết
    Chỉ em hàm tạo số ngẫu nhiên và cách nhập giá trị ngẫu nhiên cho ma trận
    Trong sách viết đó là hàm randomize() và random()
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <math.h>
    4. #include <iomanip.h>
    5. #define n 3
    6. void main()
    7. { int i, j; int A[i] [j];
    8. for (i = 1; i <= n; i++)
    9.     for (j = 1; j <= n; j++)
    10.         {randomize(); A[i][j] = random();
    11. printf("A[i][j] = %d  \n", A[i][j];}
    12. getch();}
    Để khai báo 1 số ngẫu nhiên thì đầu tiên bạn khai báo 2 thư viện <time.h> và <stdlib.h>
    hàm rand() trong sẽ cho bạn 1 số ngẫu nhiên từ 0 đến 2^15-1. Vậy để tạo 1 số ngẫu nhiên trong đoạn [a,b] thì phải làm thế nào. Rất đơn giản đầu tiên lấy rand()%(b+1) thì nó sẽ cho 1 giá trị trong khoảng từ 0 đến b (vì phần dư không thể nào lớn hơn hay bằng b+1 được. Sau đó dùng toán '+' hay '-' để làm sao để nó nằm trong đoạn [a,b]. Nói thì bạn rất khó hình dung nên tôi cho 2 VD sau
    Code:
    rand()%201-100   // cho 1 so ngau nhien trong [-100,100]
    Code:
    rand()%11+10      // cho 1 so ngau nhien tu [10,20]
    Lưu ý quan trọng: vừa khai báo void main() xong bạn nhớ ghi lệnh srand(time(0)); để tránh trường hợp lần sau nó sẽ ra giống như lần trước.

    VD: 1 chương trình in ra các số ngẫu nhiên trong mảng.
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    void nhap(int ia[],int &n)
    {
    	
    	for(int i=0;i<n;i++)
    		printf("%d ",ia[i]=rand()%201-100);
    }
    void main()
    {
    	int ia[100],n;
    	srand ( time( 0 ) );
    	printf("\nnhap n (n chan): ");
    		scanf("%d",&n);
    	nhap(ia,n);
    }
    Đã được chỉnh sửa lần cuối bởi clementboy03 : 29-03-2009 lúc 04:44 PM.

  8. #8
    Ngày gia nhập
    03 2009
    Bài viết
    523

    thanks anh clementboy, code lần này đã run
    giúp em với, đoạn code này trình dịch ko tìm ra lỗi nhưng lại làm treo máy....
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <stdlib.h>
    4. #include <time.h>
    5. #define n 3
    6. void main()
    7. { int i, j; int A[n][n];
    8. for (i = 1; i <= n; i++)
    9.     for (j = 1; j <= n; j++)
    10.         {A[i][j] = rand ()%201 - 100;
    11. printf ("A[i][j] = %d  \n", A[i][j]);}
    12. getch();}
    Đã được chỉnh sửa lần cuối bởi chuong01 : 29-03-2009 lúc 06:18 PM.

  9. #9
    Ngày gia nhập
    11 2008
    Bài viết
    116

    mình đã sửa lại dùm bạn rồi. Mà bạn thiếu lệnh srand(time(0));
    đây là code mình đã sửa (sr vì tui sửa hơi nhiều nhưng để cho nó đẹp mắt thôi ^^)
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <time.h>
    #define n 3
    void main()
    { 
    	srand(time(0));
    	int i, j; int A[n][n];
    	for (i = 1; i <= n; i++)
        	{
    			for (j = 1; j <= n; j++)
            		{
    					A[i][j] = (rand ()%201 - 100);
    					printf ("%2d  ",A[i][j]);
    				}
    			printf("\n"); // cai nay dung de sau khi in het 1 dong thi xuong hang in tiep dong thu 2
        	}
    }

  10. #10
    Ngày gia nhập
    03 2009
    Bài viết
    523

    vẫn báo lỗi bạn ơi: Unhandle Exception

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

  1. Lập trình C++ Sữa lỗi chương trình tạo ma trận ngẫu nhiên
    Gửi bởi duy0106 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 07-05-2012, 12:21 AM
  2. Ma trận xoắn ốc với giá trị ngẫu nhiên
    Gửi bởi brandy253 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 1
    Bài viết cuối: 01-03-2012, 08:53 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. Nhập ngẫu nhiên 1 ma trận bằng hàm rand()
    Gửi bởi kienchochethahaha trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 19-05-2010, 05:43 PM
  5. Cách Tạo giá trị ngẫu nhiên cho ma trận
    Gửi bởi nobita2008 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 04-04-2009, 12:05 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