我想创建一个矩阵,其所有元素均为 1 或 0。这是我尝试过的,它会按照我的意愿在随机位置生成一个带有 1 和 0 的矩阵。然而,它每次都会产生相同的矩阵。
#include <stdio.h>
#include <stdlib.h>
int a[10][10];
int i = 0,j= 0,n=0;
int main(void)
{
populate(5);
print(5);
return 0;
}
int populate(int n)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
a[i][j] = rand()%2;
}
}
}
int print(int n)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
}
编辑:根据回复,我已编辑我的函数如下。但是我看到我的矩阵现在全为零或全一。
int populate(int n)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
srand (time(NULL));
a[i][j] = rand()%2;
}
}
}
最佳答案
However, it produces the same matrix everytime.
那是因为您尚未添加代码来为随机数生成器提供种子。添加
srand(time(NULL));
在 main
开始处,在对 rand()
进行任何调用之前。
关于c - 为什么这段代码中的 rand() 总是产生相同的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30906072/