请稍等 ...
×

采纳答案成功!

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

各位老铁,老师,帮忙看下我的这个是不是有问题呀,我咋总是觉得我的概率那部分不对呀。

# -*- coding:utf-8 -*-    
__author__ = 'Swd'
__date__ = '2018/8/1 21:41'

"""
    购买1级石头
"""

l1_value = 0.75     # 购买1颗1级石头消耗0.75金
l1_value_diamond = 8    # 购买1颗1级石头消耗8点体力

"""
    1级石头合成3级石头
"""

l1_to_l3 = 13   # 1颗1级石头合成为1颗3级石头需要消耗13颗1级石头
l1_to_l3_gold = 0.39    # 1颗1级石头合成为1颗3级石头需要消耗0.39金
l1_to_l3_vit = 10   # 1颗1级石头合成为1颗3级石头需要消耗10点体力


"""
    3级石头合成4级石头
"""

l3_to_l4 = 16   # 1颗3级石头合成1颗4级石头需要消耗1颗3级石头以及16颗1级石头
l3_to_l4_gold = 0.897   # 1颗3级石头合成1颗4级石头需要消耗0.897金
l3_to_l4_vit = 10   # 1颗3级石头合成1颗4级石头需要消耗10点体力,合成失败不扣除体力
l3_to_l4_rate = 0.4878  # 1颗3级石头合成1颗4级石头成功率只有0.4878,但是不消耗体力


"""
    4级石头合成6级石头
"""

l4_to_l6 = 12   # 1颗4级石头合成1颗6级石头需要消耗12颗4级石头,成功率为1
l4_to_l6_gold = 19.75   # 1颗4级石头合成1颗6级石头需要消耗19.75金
l4_to_l6_vit = 10   # 1颗4级石头合成1颗6级石头需要消耗10点体力


"""
已知1颗6级石头市场价为750金,请问是自己合成石头划算还是购买划算
其他因素:
    1颗钻石(diamond)可以卖出0.05金
    1点体力(vit)可以卖出1金
"""

import random


def l1tol3(l3=0, l4=0, gold=0):
    gold += ((l1_to_l3 * l1_value) + (l1_to_l3 * l1_value_diamond * 0.05) + (l1_to_l3_vit * 1))
    gold = round(gold, 3)
    l3 += 1
    print("已经成功合成3级石头~")
    print("现在前往合成4级石头")
    l3tol4(l3, l4, gold)

def l3tol4(l3, l4, gold):
    if l3 > 0:
        gold += ((l3_to_l4 * l1_value) + (l3_to_l4 * l1_value_diamond * 0.05))
        gold = round(gold, 3)
        rate = random.random()
        if rate > l3_to_l4_rate:
            gold += (l3_to_l4_vit * 1)
            gold = round(gold, 3)
            l4 += 1
            l3 -= 1
            print("恭喜合成四级石头~")
            if l4 < 12:
                print("当前4级石头数量为:" + str(l4) + ",还不足以合成6级石头,请继续制作。")
                l1tol3(l3, l4, gold)
            else:
                print("当前4级石头已经拥有12块,可以合成6级石头了~")
                print("制作16块4级石头一共消费:" + str(gold) + "金")
                l4tol6(l4, gold)
        else:
            l3 -= 1
            print("合成失败,需要重新制作3级石头")
            l1tol3(l3, l4, gold)

def l4tol6(l4, gold):
    if l4 >= 12:
        gold += (l4_to_l6_gold + l4_to_l6_vit)
        gold = round(gold, 3)
        print("恭喜您已经成功合成了6级石头,共消费:" + str(gold) + "金~")
        if gold >= 750:
            print("得出结果,自己合成石头是赔钱的~")
        else:
            print("得出结果,自己合成石头是赚钱的~")
        return

if __name__ == "__main__":
    l1tol3()


正在回答

2回答

7七月 2018-08-01 23:26:12

算的结果是多少,可以 说一下

0 回复 有任何疑惑可以回复我~
  • 提问者 石小咚丶 #1
    值是不固定。但是平均在1000左右。
    回复 有任何疑惑可以回复我~ 2018-08-01 23:36:04
  • 提问者 石小咚丶 #2
    因为我的概率那里是使用random随机的小数然后对比的概率,所以每一次运行的结果都是不一样的。得看random的心情。。。。
    回复 有任何疑惑可以回复我~ 2018-08-01 23:40:00
  • 7七月 回复 提问者 石小咚丶 #3
    你这个思路就不对,肯定计算出来是个固定值,随机值 怎么判断
    回复 有任何疑惑可以回复我~ 2018-08-02 01:13:15
慕慕1312781 2018-08-24 17:21:31

老师要求的做的是个预期,不是动态的生成结果(我也是做的动态的生成结果),你的代码我浏览一下,要做动态的话,没有循环肯定是不对的。如果做预期也就是得到唯一结果,(不需要循环)把损耗除以概率就可以了.

1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信