程序说明oop
做为一个扫雷爱好者,今天忽然想作一个脚本,看看本身还剩下多少局才能让胜率增加1个百分点ui
脚本经过已玩游戏数和已胜游戏数,推算还须要连胜多少局游戏才能让本身的获胜率增加一个百分点code
获胜率是已胜游戏除以已玩游戏的商精确到小数点后两位后乘以百分之百,小数点后两位之后的数字所有舍去orm
好比72/359=0.20055710306407,所以当前的获胜率是20%游戏
赢一局,胜率为73/360 = 0.20277777777778→胜率20%ip
赢两局,胜率为74/361 = 0.20498614958449→胜率20%ci
赢三局,胜率为75/362 = 0.20718232044199→胜率20%it
赢四局,胜率为76/363 = 0.20936639118457→胜率20%io
赢五局,胜率为77/364 = 0.21153846153846→胜率21%form
所以,以当前状态再连胜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