我正在研究VBA中的賭博模擬,以確定輸贏概率中的變化將如何影響我的結果的標準偏差。在多次運行我的代碼後,我注意到我的Else參數被跳過,結果numtry總是等於1.失敗,勝利和嘗試都表示總計爲一的數字(失敗< 1,失敗+贏得< 1,失敗+ win + tryagain = 1)如果VBA中的循環忽略其他參數
這是我的代碼。
Sub game()
Dim win, tryagain, prize, fail, numtries, winnings, roll As Integer
prize = Sheets("Game 1").Cells(3, 1).Value
win = Sheets("Game 1").Cells(5, 1).Value
tryagain = Sheets("Game 1").Cells(7, 1).Value
fail = Sheets("Game 1").Cells(9, 1).Value
winnings = 0
numtries = 1
For i = 1 To 9999
roll = Rnd()
If roll <= fail Then
winnings = 0
Exit For
ElseIf fail <= roll <= fail + win Then
winnings = prize * numtries
Exit For
Else
numtries = numtries + 1
End If
Next i
Sheets("Game 1").Cells(15, 3).Value = winnings
Sheets("Game 1").Cells(15, 4).Value = numtries
End Sub
謝謝!
更新的答案,包括一些改動你的代碼。將兩個Subs都複製到VBA中,然後運行'runs2()'來運行'runs = 99',看看它在做什麼。我想你需要考慮'numtries'。 – 2014-08-30 01:05:43
無關但友好的說明,只有「roll」是一個Integer,其餘的都是聲明爲Variant。你不能像你一樣鏈接昏暗,它必須像「昏暗的勝利作爲整數,滾動整數」等。 – aevanko 2014-08-30 01:48:10