C 如何防止随机变量重复相同的数字

标签 c variables random

所以我刚刚学习 C,我想知道如何防止使用 rand() 函数随机化的变量重复相同的数字。我有一个脚本,它简单地随机化并在 for 循环中打印变量 4 次。我怎样才能使变量在每次使用 rand() 函数后都不会获得相同的数字?

#include <stdio.h>
#include <stdlib.h>
int randomInt;
int main()
{
    srand(time(0));
    for (int i = 0; i < 4; ++i) {
        randomInt = rand() % 4;
        printf("%d\n", randomInt);
    }
    return 0;
}

最佳答案

在大多数机器上,int 是 32 位。因此,在 232 次迭代之后,您肯定会得到一些重复(而且可能早很多)。

如果您将自己限制在更少的循环中,请考虑例如保留以前遇到的随机数数组(或一些哈希表,或一些二叉树,或其他一些容器)。

对于只重复 4 次的循环,保留一个(最多 4-1)个先前发出的数字的数组非常简单,并且足够高效。

另请阅读 pigeonhole principle .

关于C 如何防止随机变量重复相同的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48590853/

相关文章:

python - 使用局部变量从一个函数到另一个函数

c - fprintf(textFilepointer) 在文件中打印两次

c - Intrinsic __lzcnt64 使用不同的编译选项返回不同的值

javascript - JS - 将函数的参数存储在变量中以在另一个函数中使用

c# - iOS 版 SQLite - RANDOM() 不够好

r - 关于 R 中 set.seed() 的问题

mysql - 插入随机字符到MYSQL数据库

c - ALSA 配置以启用多个进程之间的设备共享

c++ - NEON 与英特尔 SSE - 某些操作的等效性

ios - 当将变量从两个不同的 View 转移到一个 View 时,变量会被替换