如何用 While...Wend 和 Do...Until 模拟抛硬币?

How to simulate a coin flip with While... Wend and Do... Until?

开发一个解决方案,将硬币掷给定次数,然后打印出正面数和反面数。抛硬币的方程式是

Coin = Integer(random*2) + 1

当 Coin = 1 时,抛出正面,当 Coin = 2 时,抛出反面。

随机returns一个介于0和1之间的数字,包括0,但不包括1。

因此,当random小于0.5时,Coin等于1;当random大于等于0.5小于1时,Coin等于2.

结构:While...wend 和 Do...Until

我已经完成了 For Next 结构,但我无法将其转换为那些结构。

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.")

循环

原理

' 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