c - 为什么这段代码中的 rand() 总是产生相同的矩阵

标签 c matrix random

我想创建一个矩阵,其所有元素均为 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/

相关文章:

python - 使用 for 循环从矩阵集合中删除(每个矩阵的)行和列

java - 矩阵到 JTable

ruby - Ruby 中的快速(不安全)随机字节生成器

c++ - 使用Crypto++生成指定范围内的随机数

c++ - 如何将十进制数数组转换为二进制数数组?

c - 简单读取/显示 C 程序在用户输入数据时输出不正确的值

java - 错误 : (-13:Image step is wrong) Step must be a multiple of esz1 in function 'cv::Mat::Mat'

Ruby,生成随机的十六进制颜色(仅浅色)

c - 如何使用 bison 和 flex 制作多实例命令行解析器和检查器以在固件(裸机构建环境)中使用?

c - 将 GCC __sync 扩展用于可移植的 C 库