另一种创建随机数的方法

Another way to create random numbers

本文关键字:方法 随机数 创建 另一种      更新时间:2023-10-16

在C/C++中创建随机数的一种有效方法是rand()函数。但我见过这样的代码来创建随机变量:

int x; x%=100;

这是产生一个简单随机数的好方法吗?如果你的答案是否定的,请告诉我为什么?

编辑:实际代码在这里:

int temp1,temp2;
A=(abs(temp1))%11-1;
B=(abs(temp2))%11-1; //Randomize without using rand()

我的一个朋友写了这个代码。我试图编译它,但我得到了uninitialized local variable 'temp1' used错误(在MSVS上)。他在2011年编写了这段代码,并在他的Linux上使用了最新版本的GCC。

很少看到更糟糕的情况。

在使用未初始化的变量时,您有未定义的行为。

使用模数会引入统计偏差。

您的朋友误解了未初始化的变量。

暂时忽略从它们中读取是未定义的,因此可以做任何事情,如果你假装它们将安全地产生任意值,那么你需要记住任意并不意味着随机

这种方法具有介于最小值和随机值分布之间的值。因此,你无法预测你会得到什么,但这并不能使它在任何有意义的意义上成为有用的"随机"。

此外,应用%会破坏任何分发,所以也不要这样做。

告诉你的朋友在他的编译设置中打开警告。他的GCC试图告诉他这一切,但他不听。