01/10/2018, 11:59

Code hiện mảng 100 số ngẫu nhiên chỉ ra 100 số giống nhau

code của em như này nhuwnh run nó chạy ra 100 số giống nhau là sao ạ. helpppp

#include<stdio.h>
#include<time.h>
#include<stdlib.h>

int main(int a[])

{
	int i;
	for(i=1;i<=100;i++)
	{
   		int a[100];
   		srand(time(NULL));	
		printf("	%d", rand()%10000);}}
Henry viết 14:12 ngày 01/10/2018

Bạn thử làm thế này

int main(int a[])

{
    srand(time(NULL));
    int i;
    int a[100];
    for(i=0; i < 100; i++)
    {
        a[i] = rand()%10000;
    }
    return 0;
}
Dark.Hades viết 14:01 ngày 01/10/2018

Nói là random nhưng nó không random đâu.

Đọc để hiểu về random trong C++, hiểu vì sao phải khởi tạo srand(seed):

Learn C++ – 7 Dec 08

5.9 — Random number generation

The ability to generate random numbers can be useful in certain kinds of programs, particularly in games, statistics modeling programs, and scientific simulations that need to model random events. …

Trong modern C++ có hỗ trợ std::mt19937 sinh số ngẫu nhiên tốt hơn.

Trần Hoàn viết 14:04 ngày 01/10/2018

rand() thực chất không phải là random, chỉ là một quy tắc biến đối từ seed thành kết quả
seed thì lại là kết quả của srand(). Hầu như ngôn ngữ nào cũng có một hàm random kiểu như vậy.

srand(time(NULL)) thì cung cấp seed dựa trên thời gian hiện thời. Mà chương trình thế này thì chạy nhanh quá, 100 vòng lặp không tốn đến 1ms nên srand(time(NULL)) 100 lần giống hệt nhau. Seed giống nhau thì rand() cũng giống nhau luôn.

Các xử lý là đưa seed ra khỏi vòng lặp, tức là đưa lệnh srand(time(NULL)); lên trước vòng for.

Monochorme viết 14:02 ngày 01/10/2018

hay quá bác ơi =)))))

Bài liên quan
0