QBasic 计算还需要净胜/负多少局才能胜率增/减1%

本文介绍了一个使用QBasic编写的简易程序,该程序可以计算玩家在游戏中连胜或连败多少局才能使胜率变化1%。程序考虑了不同的特殊情况,并通过示例说明了如何进行计算。

2014年的12月29日,写了个VBS脚本,计算还需要连胜多少把才能让自己的胜率提升1%:

这个脚本的地址在:http://my.oschina.net/Tsybius2014/blog/362078

结果后来连着输了几把,胜率掉了1%(汗)。正好昨天看了下QBasic,就用QBasic写段代码计算一下吧

我的编码环境为:编译器为Win32下的FreeBasic(版本1.00.0),IDE为FBIde(版本0.4.6r4)

这段代码计算了还需要连胜多少把才能把自己的胜率提升1%,也计算了还需要连败多少把就会让胜率降低1%

计算规则:

1)以当前玩了426局,获胜86局为例,当前的胜率是0.201878,截去小数后是20%。

2)在这个基础上,连胜4局后,玩了430局,获胜90局,胜率为0.209302,截去小数后还是20%;但在连胜5局后,玩了431局,获胜91局,胜率到达0.211137,截去小数后胜率到达21%!这个时候,就认为是连胜5局后,就可以让胜率增加1个百分点。

3)同理,计算负场时,连负4局后,玩了430局,获胜86局,胜率为0.2,即20%;连负5局后,玩了431局,获胜86局,胜率为0.199536,截去小数后,是19%,视为胜率下降一个百分点。

需要注意的几点是:

1)胜率100%的时候,再连胜多少局胜率都是100%

2)胜率99%的时候,再连胜多少局胜率都是99%

3)胜率0%的时候,再连负多少局胜率都是0%

程序代码如下:

REM 计算还需要连胜多少局才能让胜率涨一点
REM 计算还需要连败多少局才能让胜率降一点

DIM GAMEPLAYED AS INTEGER 
DIM GAMEWON AS INTEGER  

DIM INPUT1 AS STRING : INPUT "HOW MANY GAMES HAVE YOU PLAYED? "; INPUT1
DIM INPUT2 AS STRING : INPUT "HOW MANY GAMES HAVE YOU WON? "; INPUT2

PRINT

GAMEPLAYED = FIX(VAL(INPUT1))
GAMEWON = FIX(VAL(INPUT2))

PRINT "GAMEPLAYED: "; GAMEPLAYED
PRINT "GAMEWON: "; GAMEWON

PRINT

'输入合法性校验
IF GAMEPLAYED < 0 OR GAMEWON < 0 OR GAMEPLAYED < GAMEWON THEN
    PRINT "GAMEPLAYED MUST BIGGER-EQUAL THAN 0"
    PRINT "GAMEWON MUST BIGGER-EQUAL THAN 0"
    PRINT "GAMEPLAYED MUST BIGGER THAN GAMEWON"
    GOTO PRG_FINISH 
END IF

'计算当前胜率
PRINT "CURRENT WINNING RATE: "; GAMEWON * 100 \ GAMEPLAYED; "%"

'计数器
DIM COUNTER AS INTEGER

'计算还需要多少局连胜才能增长一点胜率

'检查特例
IF GAMEPLAYED = GAMEWON THEN
    PRINT "NO NEED TO IMPROVE!"
    GOTO MISSION1_COMPLETE
ELSEIF GAMEWON * 100 \ GAMEPLAYED = 99 THEN
    PRINT "NO SOLUTION TO IMPROVE!"
    GOTO MISSION1_COMPLETE
END IF

'模拟玩一局赢一局的过程
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

'打印结论1
PRINT "TO IMPROVE 1% WINNING RATE, YOU NEED TO WIN"; COUNTER; " GAME(S) CONTINUOUSLY"

MISSION1_COMPLETE:

'计算还需要多少局连败才能降低一点胜率

'检查特例
IF GAMEWON = 0 THEN
    PRINT "WINNING PERCENTAGE: 0%"
    PRINT "CANNOT DECLINE ANY MORE!"
    GOTO MISSION2_COMPLETE
END IF

'模拟玩一局输一局的过程
COUNTER = 1
DO 
    IF (GAMEWON) * 100 \ (GAMEPLAYED + COUNTER - 1) > _
        (GAMEWON) *  100 \ (GAMEPLAYED + COUNTER) THEN
        EXIT DO
    ELSE
        COUNTER = COUNTER + 1
    END IF
LOOP

'打印结论2
PRINT "TO DECLINE 1% WINNING RATE, YOU NEED TO LOSE"; COUNTER; " GAME(S) CONTINUOUSLY"

MISSION2_COMPLETE:

PRG_FINISH:
SLEEP
END

运行结果截图:

130741_XiHO_1425762.png

END

转载于:https://my.oschina.net/Tsybius2014/blog/363453

源码来自:https://pan.quark.cn/s/a3a3fbe70177 AppBrowser(Application属性查看器,不需要越狱! ! ! ) 不需要越狱,调用私有方法 --- 获取完整的已安装应用列表、打开和删除应用操作、应用运行时相关信息的查看。 支持iOS10.X 注意 目前AppBrowser不支持iOS11应用查看, 由于iOS11目前还处在Beta版, 系统API还没有稳定下来。 等到Private Header更新了iOS11版本,我也会进行更新。 功能 [x] 已安装的应用列表 [x] 应用的详情界面 (打开应用,删除应用,应用的相关信息展示) [x] 应用运行时信息展示(LSApplicationProxy) [ ] 定制喜欢的字段,展示在应用详情界面 介绍 所有已安装应用列表(应用icon+应用名) 为了提供思路,这里只用伪代码,具体的私有代码调用请查看: 获取应用实例: 获取应用名和应用的icon: 应用列表界面展示: 应用列表 应用运行时详情 打开应用: 卸载应用: 获取info.plist文件: 应用运行时详情界面展示: 应用运行时详情 右上角,从左往右第一个按钮用来打开应用;第二个按钮用来卸载这个应用 INFO按钮用来解析并显示出对应的LSApplicationProxy类 树形展示LSApplicationProxy类 通过算法,将LSApplicationProxy类,转换成了字典。 转换规则是:属性名为key,属性值为value,如果value是一个可解析的类(除了NSString,NSNumber...等等)或者是个数组或字典,则继续递归解析。 并且会找到superClass的属性并解析,superClass如...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值