我需要通过Rnd函数模拟经典游戏立方体(值1-6)。我的解决方案是Round(5 * Rnd() + 1, 0)
,但是当我生成1百万个值时,我没有很好的结果(按照图片)。
我认为,这个问题很难使用ROUND函数,但我不知道在哪里。
谢谢你的答案......
答案 0 :(得分:5)
让我们逐一看一下。
Rnd()
给出0到1之间的数字。
所以5 * Rnd() + 1
给出1到6之间的数字。
我们可以认为这个数字同样可能出现在10个半整数区域之一:[1,1.5],[1.5,2] ...... [5.5,6]。
其中一个将围绕1 - [1,1.5]。
其中两个将围绕2 - [1.5,2]和[2,2.5]。
3,4和5类似地有两个这些将围绕它们。
其中一个会圆到6 - [5.5,6]
这解释了您所看到的分布。
因此,Round(6 * Rnd() + 0.5, 0)
应该为您提供您正在寻找的内容,因为它会在两个方向上将区域扩展一半,因此给出1和6正确的权重。
答案 1 :(得分:1)
你试过randbetween()吗?对我来说工作得很好......