试图随机化一个数组,但每次都保持相同的随机化[重复]

Posted

技术标签:

【中文标题】试图随机化一个数组,但每次都保持相同的随机化[重复]【英文标题】:trying to randomise an array, but keep getting the same randomisation each time [duplicate] 【发布时间】:2014-06-10 23:43:10 【问题描述】:

所以我创建了一个代码,允许用户输入数组的大小。然后将每个值设置为 0。然后程序获取此代码,然后将随机 1 添加到数组中。然后它输出数组,打印 '.'代替 0 和 '*' 代替 1,但每次我打印出来时它不会随机化 1 和 0 的位置。我只是保持相同的 1 和 0 布局。我错过了一行代码,还是只需要重新排列?

#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]);

我需要返回不同的东西吗?

【问题讨论】:

您展示的代码对于您展示的功能甚至都不完整。你在初始化随机数生成器吗? 【参考方案1】:

在 C 中找不到合适的欺骗候选人。

添加:

srand(time(NULL));

在您开始使用rand() 之前。这个 "seeds" pseudorandom number generator 具有难以预测(对于这个用例)的值,并导致它返回不同的数字序列。

【讨论】:

即使提供的功能都不完整,你怎么知道是问题所在?胡思乱想? @luk32 我认为不是那么疯狂,代码显示了rand() 的使用,并且描述与这个“问题”相匹配。很多初学程序员不明白rand()只是一个PRNG,需要做种。 Oh is this a dup ? @unwind 对不起,我的意思不是个人冒犯,我只是不喜欢人们在回答问题时只猜测糟糕的问题而不让他们改进问题本身。在没有上下文的情况下,没有人可以说他是否初始化了生成器,并且应该让 OP 意识到这一点。也许我个人受到伤害,因为我写了评论,而不是在我只有 90% 的时候回答这是问题所在。我觉得我个人有点过火了。但是,没有人会知道这是否是问题所在。 @luk32 不用担心!我没有那么容易被冒犯。 :) 我理解你的动机,我可能因为没有花足够的精力来改进问题而感到内疚。有时感觉毫无意义,这么多问的人似乎并不关心这个,他们只是想要一个快速的答案。 ://

以上是关于试图随机化一个数组,但每次都保持相同的随机化[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中以相同的方式随机化/洗牌两个数组

第六章:随机化(续2)

随机化一个整数数组[重复]

使用 .NET 随机化数组的最佳方法

如何使用相同的随机排序对两个数组进行排序

在砌体中随机化砖块