c - 我在生成随机数时遇到问题 (C)

标签 c arrays function random

我的问题是我无法确定如何确保 rand 函数不会为 2 个不同的单元格提供相同的数字,如果是这样,我该如何更改它而不得到其他单元格中已有的数字。( if(arr[j] != -1) 是因为我有其他函数用 (-1) ) 填充了一些单元格

这是我尝试做的一个版本(所有//都是不同尝试的剩余部分)

void fillArr(int arr[], int n)
{
    int i,j=0;
    for (i = 0; i < n; i++)
    {
        while (arr[j] == arr[j + 2] &&j + 2<n)
        {
        //srand(time(NULL));
            if (arr[j] != -1)
            {
                if (j % 2 == 0)
                {

                    arr[j] = rand() % (N - 1);
                    if (arr[j + 2] != -1)
                        arr[j + 2] = rand() % (N - 1);
                    //arr[i] = rand() % (N - 1)-rand()%(i-1);
                    srand(time(NULL));
                }
                else
                {
                    arr[j] = rand() % (N - i);
                    arr[j + 2] = rand() % (N - 1);
                    //arr[i] = rand() % (N - 1) - rand() % (i +1);
                    //srand(time(NULL));
                }
            }
            j++;
        }
    }
}

最佳答案

您不应该在每次循环迭代中重新播种 PRNG。您应该在程序开始时执行一次。

一旦每秒多次调用 srand(time(NULL)),就会产生重复的数字序列。这在您的代码中似乎不太可能。

供引用:

关于c - 我在生成随机数时遇到问题 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54117726/

相关文章:

c - C 中对 `SHA1' 的 undefined reference

c - 为什么这个函数没有显示正确的结果作为输出?

c - 找到数组中可能的最大总和的最佳答案是什么

php - 如何在javascript中动态调用php函数

c - 使用 strtok_r 时 malloc.c 断言失败

c++ - 鉴于此示例,与使用多线程或进程相比,轮询设计对我有何好处?

C 矩阵结构

php - 合并数组内部数组

javascript - 如何删除 .bind() 的上下文参数

r - 在 R 中绘制函数