【发布时间】:2015-06-18 03:40:52
【问题描述】:
我想创建一个矩阵,它的所有元素都是 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;
}
}
}
【问题讨论】:
-
“任何相信算法可以产生随机性的人都存在于数学上的罪恶状态。”或者至少,疼痛。看到这个:stackoverflow.com/questions/1108780/…你需要重新播种
rand -
如果您以这种方式编辑函数,则不是根据回复进行的。例如,您似乎完全错过了这一点,“对于在调用 srand 中使用的每个不同的种子值,可以预期伪随机数生成器在随后调用 rand 时生成不同的连续结果。”和这个“添加 srand(time(NULL)); 在 main 的开头。”