另一种创建随机数的方法

时间:2014-10-22 16:46:18

标签: c++ c

在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年编写了这段代码,并使用最新版本的GCC在他的Linux上工作。

2 个答案:

答案 0 :(得分:6)

很难看到更糟糕的事情。

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

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

答案 1 :(得分:4)

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

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

此方法介于最小值和随机值分布之间。所以你不能预测你得到了什么,但这并没有使它有用"随机"在任何有意义的意义上。

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

告诉你的朋友在他的编辑设置中打开警告。他的海湾合作委员会正试图告诉他这一切,但他并没有倾听。