C中的随机数

Ser*_*ruk 13 c random srand

for(i = 0; i < n; i++){
        srand(time(NULL));
        printf("%d ", time(NULL));
        for(j = 0; j < (n-1); j++){
            a[i][j] = rand();
        }
    }
Run Code Online (Sandbox Code Playgroud)

我尝试生成随机数,但它们是相同的......我试试srand(i * time(NULL)).不管......我该怎么办?

数组声明:

int** a;
int i;
printf("Enter array size: ");
scanf("%d", &n);

a = (int**)calloc(n, sizeof(int));
for(i = 0; i < n; i++)
    a[i] = (int*)calloc(n-1, sizeof(int));
Run Code Online (Sandbox Code Playgroud)

Byr*_*ock 21

srand()在循环之外调用.您每次迭代都会重新播种.

srand()对随机数生成器进行种子处理,以便根据输入获得不同的随机数序列.您的循环运行速度非常快,因此调用time(NULL)始终返回相同的值.您将在每次迭代时重置为相同的随机序列.一般来说,只能srand()在程序中调用一次.


Car*_*rum 6

不要srand()每次都通过循环调用- 只需事先做一次.