在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上工作。
答案 0 :(得分:6)
很难看到更糟糕的事情。
当您使用未初始化的变量时,您有未定义的行为。
使用模数会引入统计偏差。
答案 1 :(得分:4)
你的朋友误解了未经初始化的变量。
暂时忽略从他们那里读取未定义并因此可以做任何事情,如果你假装他们会安全地产生任意值,那么你需要记住 任意并不意味着随机 。
此方法介于最小值和无随机值分布之间。所以你不能预测你得到了什么,但这并没有使它有用"随机"在任何有意义的意义上。
此外,应用%
会破坏任何分发,所以也不要这样做。
告诉你的朋友在他的编辑设置中打开警告。他的海湾合作委员会正试图告诉他这一切,但他并没有倾听。