程序说明
作为一个扫雷爱好者,今天突然想做一个脚本,看看自己还剩下多少局才能让胜率增长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 NextDim Input1 : Input1 = InputBox("已玩游戏数", "输入参数1", VbOKOnly)Dim Input2 : Input2 = InputBox("已胜游戏数", "输入参数1", VbOKOnly)'输入合法性检验If Not IsNumeric(Input1) Or Not IsNumeric(Input2) Then MsgBox "输入非法,应为数字", VbOKOnly + VbCritical, "警告" Wscript.QuitEnd IfDim GamePlayed : GamePlayed = CInt(Input1)Dim GameWon : GameWon = CInt(Input2)If GamePlayed <= 0 Or GameWon < 0 Then MsgBox "已胜游戏数应不小于0,已玩游戏数应大于0", VbOKOnly + VbExclamation , "警告" Wscript.QuitEnd IfIf GamePlayed < GameWon Then MsgBox GamePlayed & "<" & GameWon MsgBox "已胜游戏数应小于等于已玩游戏数", VbOKOnly + VbCritical, "警告" Wscript.QuitElseIf GamePlayed = GameWon Then MsgBox "胜率到了100%", VbOKOnly + VbInformation, "通知" Wscript.QuitElseIf GameWon * 100 \ GamePlayed = 99 Then MsgBox "胜率到了99%,你的胜率无法增长了", VbOKOnly + VbInformation, "通知" Wscript.QuitEnd If'模拟玩一局赢一局的过程Dim Counter : Counter = 1Do If (GameWon + Counter - 1) * 100 \ (GamePlayed + Counter - 1) < _ (GameWon + Counter) * 100 \ (GamePlayed + Counter) Then Exit Do Else Counter = Counter + 1 End IfLoop MsgBox "还需要赢" & Counter & "局才能提升1%胜率", VbOKOnly + VbInformation, "通知"Wscript.Quit
END