C 尝试随机化数组,但每次都会得到相同的随机化结果
因此,我创建了一个代码,允许用户输入数组的大小。然后每个值都设置为0。然后程序获取该代码,然后向数组中随机添加1。然后它输出数组,在0处打印“.”,在1处打印“*”,但它不会在每次打印时随机化1和0的位置。我只是不断得到1和0的相同布局。我是否遗漏了一行代码,或者只是需要重新安排C 尝试随机化数组,但每次都会得到相同的随机化结果,c,arrays,C,Arrays,因此,我创建了一个代码,允许用户输入数组的大小。然后每个值都设置为0。然后程序获取该代码,然后向数组中随机添加1。然后它输出数组,在0处打印“.”,在1处打印“*”,但它不会在每次打印时随机化1和0的位置。我只是不断得到1和0的相同布局。我是否遗漏了一行代码,或者只是需要重新安排 #include <stdio.h> #include <stdlib.h> #include <time.h> solid() { int width, height;
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
solid()
{
int width, height;
int* myEnvironment(int width, int height, int numWoodchips);
printf("\nEnter rows and columns : ");
scanf("%d %d", &width, &height);
int myArray[width][height];
void printEnvironment(int* environment, int width, int height);
int i,j;
printf("\n>Creating grid of size [%d][%d]\n", width, height);
for (i = 0; i < width; i++)
{
for (j = 0; j < height; j++)
{
myArray[i][j] = rand() %2;
if(myArray[i][j]==0)
printf(".");
else if(myArray[i][j]==1)
printf("*");
}
}
printf("\n");
printf("\n>grid of size [%d][%d] created \n", width, height);
return (myArray[i][j]);
#包括
#包括
#包括
固体()
{
int宽度、高度;
int*myEnvironment(int宽度、int高度、int numWoodchips);
printf(“\n输入行和列:”);
扫描频率(“%d%d”、&宽度和高度);
int myArray[宽度][高度];
void printEnvironment(int*环境、int宽度、int高度);
int i,j;
printf(“\n>创建大小为[%d][%d]\n”、宽度、高度的网格);
对于(i=0;i创建了[%d][%d]大小的网格,\n”、宽度、高度);
返回(myArray[i][j]);
我需要返回不同的内容吗?在C中找不到一个好的dupe候选对象 加:
在开始使用
rand()
之前,这是一个很难预测的问题(对于本用例)值,并使其返回一个不同的数字序列。您正在显示的代码对于您正在显示的函数甚至都不完整。您是否正在初始化随机数生成器?您如何知道即使是所显示的函数也不完整时会出问题?胡乱猜测?@luk32我认为不太胡乱,代码显示了使用rand()
并且描述与这个“问题”相匹配。许多初学者不理解这一点rand()
只是一个PRNG,需要植入。@放松抱歉,我的意思不是个人冒犯,我只是不喜欢人们在回答拙劣问题时猜测,而不让他们改进问题本身。没有上下文,没有人可以说他是否初始化了生成器,OP应该知道这一点。也许我个人受到了伤害,因为我写了一篇文章评论,而不是在我只有90%的时候回答这个问题。我觉得我个人有点过火了。但是,没有人会知道这是不是问题。@luk32别担心!我不是那么容易被冒犯的。:)我理解你的动机,我对没有花足够的精力改进问题感到内疚。一些很多时候,这让人觉得毫无意义,所以很多提问的人似乎并不在意这一点,他们只是想要一个快速的回答/
srand(time(NULL));