请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

我的五行石计算代码纰漏在哪?

七月老师,

我看到您给其他人的回复,说算出来是900多,但我的代码算出来最少是1600+,能帮我看看我的代码是哪里出了差错吗?我很想知道我思维上的漏洞,但我又检查不出来。

提前谢谢您了。

以下是我的代码:

# 1:0.75金+8钻
# 1→3:12①石+0.39金+10体
# 3→4:16①石+0.897金+10体,48.78%成功,失败返还体
# 4→6:12④石+19.75金
import random  # 引入随机数,方便后面计算概率
gold = diamond = vit = failed_count = stone_1_count = stone_3_count = stone_4_count = 0  # 给金币、钻石、体力、失败次数、一级石头、三级石头和四级石头初始值,方便统计


def buy_1():  # 购买一级石头
    global gold, diamond, stone_1_count
    gold += 0.75
    diamond += 8
    stone_1_count += 1  # 统计一级石消耗量


def _1to3():  # 合成三级石头
    global gold, vit, stone_3_count
    for i in range(0, 12):
        buy_1()
    gold += 0.39
    vit += 10
    stone_3_count += 1  # 统计三级石消耗量


def _3to4():  # 合成四级石头
    global gold, vit, failed_count, stone_4_count
    if random.random() <= 0.4878:  # 如果随机数小于48.78%相当于合成成功
        for i in range(0, 16):
            _1to3()
        gold += 0.897
        vit += 10
    else:  # 如果大于48.78%就相当于失败
        failed_count += 1  # 失败后,失败次数+1
        for i in range(0, 16):
            _1to3()
        gold += 0.897
        _3to4()  # 再次合成四级石头
    stone_4_count += 1  # 统计四级石消耗量


def _4to6():  # 合成六级石头
    global gold
    for i in range(0, 4):
        _3to4()
    gold += 19.75


def cost():  # 把钻石和体力换算成金币,计算最终花费并返回
    total_cost = gold + diamond * 0.05 + vit
    return total_cost


def declare():  # 把最终统计打印出来
    print("花费金币:"+str(round(gold, 2)))
    print("花费钻石:"+str(diamond))
    print("花费体力:"+str(vit))
    print("失败次数:" + str(failed_count))
    print("消耗一级石:"+str(stone_1_count))
    print("消耗三级石:" + str(stone_3_count))
    print("消耗四级石:" + str(stone_4_count))
    print("总共花费:"+str(round(cost(), 2)))


_4to6()  # 运行“合成六级石”的函数
if cost() >= 750:
    declare()
    print("不划算,请从玩家处购买。")
else:
    declare()
    print("划算,自己合成吧。")

其中合成失败两次的运行结果如下:

花费金币:926.57
花费钻石:9216
花费体力:1000
失败次数:2
消耗一级石:1152
消耗三级石:96
消耗四级石:6
总共花费:2387.37
不划算,请从玩家处购买。

就算合成一次都不失败,也是这个结果:

花费金币:624.3
花费钻石:6144
花费体力:680
失败次数:0
消耗一级石:768
消耗三级石:64
消耗四级石:4
总共花费:1611.5
不划算,请从玩家处购买。


正在回答 回答被采纳积分+3

1回答

7七月 2017-11-26 02:24:01

这个问题其实还是挺麻烦的,并不是大家想象中那么简单。首先是如何来衡量划算还是不划算。我是以合成一块儿六级五行石的价格来衡量划算还是不划算的。那么这个里面的分歧点在于 这个概念如何计算。其实概念计算比较准确的是要算期望,简单点儿的算的话就是,本来如果不失败消耗的1级五行石是A,但是失败,那么要消耗更多的1及五行石。就是用A 除以这个概率。得到包含失败的总石头数。

1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号