Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Hàm sinh số ngẫu nhiên chỉ sinh ra đúng 1 giá trị là do đâu?

  1. #1
    Ngày gia nhập
    08 2011
    Bài viết
    36

    Mặc định Hàm sinh số ngẫu nhiên chỉ sinh ra đúng 1 giá trị là do đâu?

    Tình hình là mình cần sinh một số ngẫu nhiên, search trên mạng thì cũng được vài hàm nhưng ko ăn thua vì nó chỉ ra đúng 1 giá trị.

    Đầu tiên:
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    void main()
    {
       int i, k;
       //randomize();
       k = rand()%(30-10+1)+10;
       for( i = 0; i < 10; i++ )
        {
          printf( "Random number #%d: %d\n", i, k );
        }
    }
    Cái này nếu có dòng randomize vào thì ko chạy được, còn nếu ko có thì chỉ ra đúng 1 số 30. Nếu bỏ hết chỉ còn lại k = rand() thì có ra được số ngẫu nhiên nhưng rất lớn và phải hiện ngay nó mới ra khác nhau được còn nếu mà áp dụng trong bài thì nó cũng chỉ nhận 1 số, cụ thể trong bài này nó chỉ nhận đúng 1 số là 41.

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    int codinh, doan, i;
    void main()
    	{
    		printf("Tro choi doan so khong han che lan doan - Phung Quang Tuan - k7 Tin\n\n");
    		codinh = rand(1001);
    		i=1; doan = -1;
    		do
    			{
    				printf("Moi ban doan so (lan %d): ", i++);
    				scanf("%d", &doan);
    				fflush(stdin);
    				if (doan > codinh)
    					printf("Ban da doan qua cao\n\n");
    				else
    					if (doan < codinh)
    						printf("Ban da doan qua thap\n\n");
    					else
    						{
    							printf("Ban da doan chinh xac\n\n");
    							break;
    						}
      			}
      		while (doan != codinh);
    }

    Thứ 2:
    nếu dùng hàm random() thì báo lỗi luôn, ko định nghĩa hàm này...hix

    Mong các cao thủ chỉ giáo dùm ạ?

  2. #2
    Ngày gia nhập
    05 2011
    Bài viết
    16

    Nó ra đúng 1 số 30 là tất nhiên rồi, phải cho k = rand()%(30-10+1)+10; nằm trong vòng for chứ!

    C++ Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <stdlib.h>
    4. int main()
    5. {
    6.    int i, k;
    7.    //randomize();
    8.    
    9.    for( i = 0; i < 10; i++ )
    10.     {
    11.       k = rand()%(30-10+1)+10;
    12.       printf( "Random number #%d: %d\n", i, k );
    13.     }
    14.     system("pause");
    15. }

  3. #3
    Ngày gia nhập
    09 2010
    Nơi ở
    Hà Nôi
    Bài viết
    462

    Chú ý này:
    +) Nếu sd Turbo C/C++, Borland C/C++
    Hàm random(n) sinh số ngẫu nhiên từ 0-->n-1
    Trước khi dùng random(n) thì nên xáo trộn bộ sinh số ngẫu nhiên bằng hàm randomize() để mỗi lần random ra 1 giá trị ngẫu nhiên.
    +) Nếu sd các IDE như DevC++, VC++
    Hàm rand() sinh số ngẫu nhiên từ 0-> RAND_MAX - 1 trong stdlib.h
    ( RAND_MAX=32767 là 1 hằng số đc d/n trong stdlib.h)
    Trước khi dùng rand() thì nên xáo trộn bộ sinh số ngẫu nhiên bằng hàm srand(time(0)) để mỗi lần random ra 1 giá trị ngẫu nhiên.( include thêm thư viện time.h)

    Để sinh 1 số ngẫu nhiên thuôc [a,b] dùng hàm rand()%(b-a+1)+a

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

  1. Bài tập C [HELP] sinh số ngẫu nhiên và xác định tần số
    Gửi bởi hoan1605 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 03-09-2013, 09:41 AM
  2. Bài tập C Chương trình sinh số ngẫu nhiên
    Gửi bởi nhl19gx trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 30-08-2013, 10:24 PM
  3. Thuật toán C hàm gì để sinh 1 dãy số ngẫu nhiên
    Gửi bởi GA_ICT trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 4
    Bài viết cuối: 24-08-2013, 02:06 PM
  4. sinh một mảng các đối tượng chứa dữ liệu được chọn ngẫu nhiên từ 1 tập hơp
    Gửi bởi longtth trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 15-08-2011, 02:52 PM
  5. phát sinh ngẫu nhiên từ 20 đến 100
    Gửi bởi huongtan trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 10-05-2011, 02:20 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