圆形功能VBA EXCEL
问题描述:
我需要通过Rnd函数模拟经典播放立方体(值为1-6)。我的解决方案是Round(5 * Rnd() + 1, 0)
,但是当我生成1千万个值时,我没有好的结果(按照图片)。 我认为,这个问题是在糟糕的使用ROUND函数,但我不知道在哪里。 谢谢您的回答...圆形功能VBA EXCEL
答
让我们一起来看看这件作品。
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的正确权重。
答
你试过randbetween()吗?为我工作得很好...
+0
Yop,Randbetween也是很好的解决方案... –
如果我错了,请纠正我。但这篇文章似乎是[Excel VBA的Rnd()真的这么糟糕吗?]的副本(http://stackoverflow.com/questions/38891165/is-excel-vbas-rnd-really-this-bad)(与一个很好的答案)。但是,我无法确定,因为我无法在您的帖子中看到问题。另外,请注意'Rnd()'必须先初始化:http://stackoverflow.com/questions/26281011/excel-vba-rnd-not-actually-random – Ralph