另一种创建随机数的方法
Another way to create random numbers
在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试图告诉他这一切,但他不听。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 通过方法访问结构
- 最小硬币更换问题(自上而下方法)
- 有没有办法在 c++ 中同时生成随机数?如果没有,是否有解决方法?
- 播种随机数生成器以使用分叉的好方法是什么?
- C++:为什么此方法每次都返回相同的随机数?
- C++11 中的随机数:有没有一种简单的方法可以将生成器种子放在代码的一个位置,然后在不同的函数中使用它?
- 有没有一种更快的方法,从特定的数字池中获取随机数
- 将随机数放入缓冲区以写入文件的有效方法是什么?
- 为 STL 随机数生成器编写工厂方法
- 哪种方法最适合生成随机数
- 具有从特定范围的随机数初始化特征矩阵或向量初始化特征矩阵或向量的有效方法
- 给定二进制随机数生成器生成随机浮点数的正确方法
- 另一种创建随机数的方法
- 在2D阵列中生成随机数的同时保证特定数的X量的任何方法
- 使用随机数生成器:多实例或单实例方法
- 种子并行伪随机数生成器的好方法是什么?
- 对随机数生成器进行偏置的可能方法是什么?
- 有没有一种方法可以让我从0-10亿中得到一个随机数
- 用CUDA通过拒绝方法生成随机数.性能问题