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

谁说胖子不能爱 提交于 2019-12-05 15:06:38

程序说明

作为一个扫雷爱好者,今天突然想做一个脚本,看看自己还剩下多少局才能让胜率增长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

需要注意的是

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!