圆形功能VBA EXCEL

问题描述:

我需要通过Rnd函数模拟经典播放立方体(值为1-6)。我的解决方案是Round(5 * Rnd() + 1, 0),但是当我生成1千万个值时,我没有好的结果(按照图片)。 RESULTS HERE 我认为,这个问题是在糟糕的使用ROUND函数,但我不知道在哪里。 谢谢您的回答...圆形功能VBA EXCEL

+0

如果我错了,请纠正我。但这篇文章似乎是[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

让我们一起来看看这件作品。

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也是很好的解决方案... –