抱歉,我知道已经发布了类似的问题但是这本书让我很困惑。
在" C编程:绝对初学者指南"中,有一行:
dice1 = (rand() % 5) + 1;
为骰子游戏生成1到6之间的随机数。
这不是一个错误吗?根据我的理解,你不能使用% 5
获得5的剩余部分,这样该行只能生成1到5的数字。我是一个绝对的初学者,所以我无法判断我是否已经使用{0}。我犯了错误或书是。有人可以证实吗?
答案 0 :(得分:0)
是的,5 % 5 == 0
,因此您只能从完整表达式中获取数字1到5。该方法的另一个问题是rand()
可能返回0到2 n -1的数字,因此不同值的总数只能平均分配给其他2的幂。
因此,即使假设rand()
本身在其输出范围内给出均匀分布的值,模数也不会给出结果数的均匀分布。