【发布时间】:2013-10-23 22:11:18
【问题描述】:
所以,我对此很着迷。
rand() % 6 将始终产生 0-5 之间的结果。
但是当我需要在 6-12 之间时。
我应该有 rand() % 6 + 6
0+6 = 6.
1+6 = 7.
...
5+6 = 11. ???
如果我想要 6-12 的区间,我需要 + 7 吗?但是,0+7 = 7。什么时候会随机化 6 个?
我在这里缺少什么?哪一种是在 6 到 12 之间获得随机数的正确方法?为什么?好像我在这里遗漏了什么。
【问题讨论】:
-
附近有两只手吗?数一数你的手指,6到12之间有多少个数字?您认为
%运算符需要什么? -
当然,Daniel,随心所欲地嘲笑我,但是我正在尝试另一个 SO 问题提供的“算法”,即 rand()%(max-min)+min;纠正我如果我错了,12-6 = 6。最小值是 6。所以 rand() % 6 + 6。这就是我感到困惑的原因。
-
@John:这是一种轻松的方式告诉你算错了。你想要七个不同的值,你放在
%右边的参数是你想要得到多少个不同的值。您现在提到的算法是半开区间([min, max));有几个理由永远不要使用它(关于rand()和%);请参阅 Shafik 的答案以了解正确的方法。告诉您使用%生成某个范围内的随机数的人可能太无知而无法指导任何人。如果是教授,请随时将这个问题的链接发给他,我们会直截了当。