Многократное подбрасывание монет в Excel VBA - PullRequest
0 голосов
/ 26 февраля 2019

В Excel VBA я подбрасываю четыре монеты и считаю количество голов.Код, который я использую:

CoinHeads = Int(Round(Rnd(), 0)) + Int(Round(Rnd(), 0)) + Int(Round(Rnd(), 0)) + Int(Round(Rnd(), 0))

Это работает, но мне интересно, есть ли более простой способ сделать это в коде Excel VBA, который по-прежнему дает мне такое же распределение количества голов от 0 до4. Спасибо за любой совет!

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Вы должны написать небольшую функцию и передать число головок в качестве параметра для обобщения вашего кода (здесь подбрасывание головы, если случайное число больше или равно 0,5):

Public Function getNumberOfHeads(ByVal nb As Integer) As Integer
    Dim nbHeads As Integer: nbHeads = 0
    Randomize 
    For j = 0 To nb 
        If Rnd() >= 0.5 Then nbHeads = nbHeads + 1
    Next j
    getNumberOfHeads = nbHeads
End Function

А затем выиспользуйте это в своем коде так:

numberOfHeads = getNumberOfHeads(4)
0 голосов
/ 26 февраля 2019

Если вы хотите просто немного упростить свои утверждения, вы можете использовать Int(2 * Rnd()) вместо:

CoinHeads = Int(2 * Rnd()) + Int(2 * Rnd()) + Int(2 * Rnd()) + Int(2 * Rnd())

Кроме этого вы можете сегментировать количество головок, как @Comintern говорит в своем комментарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...