我的问题是关于 C++ 中的 rand 函数 请检查这个,为什么会产生不同的结果:
int a = 2 * rand()%5; // result = 0
int a = 2 * ( rand()%5 ); // result = 6
最佳答案
尽管您更希望 rand()
在第二次迭代中返回不同数字的概率是 1 - 1/(1 + RAND_MAX)
,第一个表达式被分组为
(2 * rand()) % 5
这与第二组不同。例如,您可以看到第二个表达式的值始终为偶数。
*
和 %
具有相同的优先级,因此关联性 开始发挥作用,这对两个运算符都是从左到右。
关于c++ - 具有两个不同结果的 Rand 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51397286/