2016-12-01 129 views
1

我需要通過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

回答

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

你試過randbetween()嗎?爲我工作得很好...

+0

Yop,Randbetween也是很好的解決方案... –