VBS脚本:计算还需要净胜多少局才能让自己的扫雷胜率增长1%

程序说明

作为一个扫雷爱好者,今天突然想做一个脚本,看看自己还剩下多少局才能让胜率增长1个百分点

VBS脚本:计算还需要净胜多少局才能让自己的扫雷胜率增长1%_第1张图片

脚本通过已玩游戏数和已胜游戏数,推算还需要连胜多少局游戏才能让自己的获胜率增长一个百分点

获胜率是已胜游戏除以已玩游戏的商精确到小数点后两位后乘以百分之百,小数点后两位以后的数字全部舍去

比如72/359=0.20055710306407,因此当前的获胜率是20%

赢一局,胜率为73/360 = 0.20277777777778→胜率20%

赢两局,胜率为74/361 = 0.20498614958449→胜率20%

赢三局,胜率为75/362 = 0.20718232044199→胜率20%

赢四局,胜率为76/363 = 0.20936639118457→胜率20%

赢五局,胜率为77/364 = 0.21153846153846→胜率21%

因此,以当前状态再连胜5局,就可以让胜率增长到21%

在两个InputBox中输入359和72后,脚本会提示这样一个MsgBox

VBS脚本:计算还需要净胜多少局才能让自己的扫雷胜率增长1%_第2张图片

需要注意的是

1)如果不是全胜,那么胜率是无法达到100%的,也就是如果有失败场次,99%就是最高胜率了

2)VBS脚本通过InputBox输入的数字,要先经过IsNumeric判断,再经过CInt转换为数字,才能放心使用

脚本代码

Option Explicit
'On Error Resume Next

Dim Input1 : Input1 = InputBox("已玩游戏数", "输入参数1", VbOKOnly)
Dim Input2 : Input2 = InputBox("已胜游戏数", "输入参数1", VbOKOnly)

'输入合法性检验

If Not IsNumeric(Input1) Or Not IsNumeric(Input2) Then
    MsgBox "输入非法,应为数字", VbOKOnly + VbCritical, "警告"
    Wscript.Quit
End If

Dim GamePlayed : GamePlayed = CInt(Input1)
Dim GameWon : GameWon = CInt(Input2)

If GamePlayed <= 0 Or GameWon < 0 Then
    MsgBox "已胜游戏数应不小于0,已玩游戏数应大于0", VbOKOnly + VbExclamation , "警告"
    Wscript.Quit
End If

If GamePlayed < GameWon Then
    MsgBox GamePlayed & "<" & GameWon
    MsgBox "已胜游戏数应小于等于已玩游戏数", VbOKOnly + VbCritical, "警告"
    Wscript.Quit
ElseIf GamePlayed = GameWon Then
    MsgBox "胜率到了100%", VbOKOnly + VbInformation, "通知"
    Wscript.Quit
ElseIf GameWon * 100 \ GamePlayed = 99 Then
    MsgBox "胜率到了99%,你的胜率无法增长了", VbOKOnly + VbInformation, "通知"
    Wscript.Quit
End If

'模拟玩一局赢一局的过程
Dim Counter : Counter = 1
Do
    If (GameWon + Counter - 1) * 100 \ (GamePlayed + Counter - 1) < _
        (GameWon + Counter) * 100 \ (GamePlayed + Counter) Then
        Exit Do
    Else
        Counter = Counter + 1
    End If
Loop 

MsgBox "还需要赢" & Counter & "局才能提升1%胜率", VbOKOnly + VbInformation, "通知"
Wscript.Quit

END

你可能感兴趣的:(vbs,胜率)