程序说明
作为一个扫雷爱好者,今天突然想做一个脚本,看看自己还剩下多少局才能让胜率增长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
来源:oschina
链接:https://my.oschina.net/u/1425762/blog/362078