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);}}

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;
}
1 Like

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):

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

1 Like

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.

1 Like

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

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?