Vba Excel: подбрасывание монет - PullRequest
0 голосов
/ 05 апреля 2020

Разработайте решение, чтобы подбросить монету заданное количество раз, а затем вывести количество голов и количество хвостов. Уравнение для подбрасывания монеты:

Coin = Integer(random*2) + 1

Когда монета = 1, бросок - это головы, а когда Монета = 2, бросок - это хвосты. Случайный Возвращает число от 0 до 1, включая 0, но не 1. Поэтому, когда случайный менее загар 0,5, монета будет равна 1; и когда в случайном порядке я больше загорел или равен 0,5, а загар меньше 1, монета будет равна 2.

Структура: в то время как ... Венд и делай ... До

Я сделал Для Следующая структура, но мне трудно превратить ее в эту структуру

, если кто-нибудь сможет мне помочь, я буду очень благодарен

Dim flips As Integer, heads As Integer, tails As Integer, i As Integer
heads = 0
tails = 0 
flips = InputBox("How many flips?") + 0
For i = 1 To flips
    If (Rnd * 2) + 1 >= 0.5 And (Rnd * 2) < 1 Then
        tails = tails + 1
    Else 
        heads = heads + 1
    End If
Next i 
MsgBox (heads & " heads, " & tails & " tails.") 

1 Ответ

0 голосов
/ 05 апреля 2020

Петли

Принцип

' For
For i = 1 To flips
    '...
Next i

' While
i = 0 ' by default
While i < flips
    i = i + 1
    '...
Wend

' Do (1)
i = 0 ' by default
Do Until i = flips
    i = i + 1
    '...
Loop


' Do (2)
i = 0 ' by default
Do
    i = i + 1
    '...
Loop Until i = flips

Применено

Sub flipsFor()
    Dim flips As Integer, heads As Integer, tails As Integer, i As Integer
    heads = 0
    tails = 0
    flips = InputBox("How many flips?") + 0
    ' For
    For i = 1 To flips
        If (Rnd * 2) + 1 >= 0.5 And (Rnd * 2) < 1 Then
            tails = tails + 1
        Else
            heads = heads + 1
        End If
    Next i
    MsgBox (heads & " heads, " & tails & " tails.")
End Sub
Sub flipsWhile()
    Dim flips As Integer, heads As Integer, tails As Integer, i As Integer
    heads = 0
    tails = 0
    flips = InputBox("How many flips?") + 0
    ' While
    i = 0 ' by default
    While i < flips
        i = i + 1
        If (Rnd * 2) + 1 >= 0.5 And (Rnd * 2) < 1 Then
            tails = tails + 1
        Else
            heads = heads + 1
        End If
    Wend
    MsgBox (heads & " heads, " & tails & " tails.")
End Sub

Sub flipsDo1()
    Dim flips As Integer, heads As Integer, tails As Integer, i As Integer
    heads = 0
    tails = 0
    flips = InputBox("How many flips?") + 0
    ' Do (1)
    i = 0 ' by default
    Do Until i = flips
        i = i + 1
        If (Rnd * 2) + 1 >= 0.5 And (Rnd * 2) < 1 Then
            tails = tails + 1
        Else
            heads = heads + 1
        End If
    Loop
    MsgBox (heads & " heads, " & tails & " tails.")
End Sub

Sub flipsDo2()
    Dim flips As Integer, heads As Integer, tails As Integer, i As Integer
    heads = 0
    tails = 0
    flips = InputBox("How many flips?") + 0
    ' Do (2)
    i = 0 ' by default
    Do
        i = i + 1
        If (Rnd * 2) + 1 >= 0.5 And (Rnd * 2) < 1 Then
            tails = tails + 1
        Else
            heads = heads + 1
        End If
    Loop Until i = flips
    MsgBox (heads & " heads, " & tails & " tails.")
End Sub
...