【问题标题】:How to simulate a coin flip with While... Wend and Do... Until?如何使用 While...Wend 和 Do...Until 模拟硬币翻转?
【发布时间】:2020-07-17 11:53:44
【问题描述】:

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

Coin = Integer(random*2) + 1

当 Coin = 1 时,抛硬币正面,而当 Coin = 2 时,抛硬币反面。

Random 返回一个介于 0 和 1 之间的数字,包括 0,但不包括 1。

因此,当 random 小于 0.5 时,Coin 将等于 1;当 random 大于等于 0.5 且小于 1 时,Coin 将等于 2。

结构:当...温和做...直到

我已经完成了 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.")

【问题讨论】:

  • 显示你的代码到现在。还有..这是什么课程?
  • 这是作业还是什么?
  • 我的课程是计算机编程算法
  • 你的导师对如何学习它有什么看法?他说要来这里吗?还是他会给你某种课程计划和指示?
  • 查看While..WendDo... Until的链接

标签: excel vba coin-flipping


【解决方案1】:

循环

原理

' 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

【讨论】:

  • 谢谢,你帮了我很多。
猜你喜欢
  • 2018-07-27
  • 2021-06-19
  • 2010-10-03
  • 2020-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-07
相关资源
最近更新 更多