如何使random.randint()更随机

时间:2018-05-17 15:03:56

标签: python

所以我正在编写我的第一个程序,它开始只是一个滚动随机骰子值的东西,但我把它扩展到它更有趣。我遇到的问题是有时候这个函数

def mathproblem(stuff): 

    if stuff == '1': 
        probuno=int(raw_input("can you solve: sqrt(169)+4")) 
        if probuno==17: 
            print('correct you may proceed') 
            rollify=True 
        else: 
            rollify=False 
    elif stuff=='2': 
        probdos=int(raw_input("can you solve: 47.9+36-14.8")) 
        if probdos==69.1: 
            print('YEEEET') 
            rollify=True 
        else: 
            print('you filthy wanker') 
            rollify=False 
    elif stuff == '3': 
        probtres=int(raw_input("can you solve: 32^2 -sqrt(625)")) 
        if probtres==399: 
            print('WOOOO') 
            rollify=True 
        else: 
            print('Wow... that was awful') 
            rollify=False 
    elif stuff=='4': 
        probquatro=int(raw_input("can you solve: ln(1)-e^0")) 
        if probquatro==-1: 
            print('MISSION ACCOMPLISHED') 
            rollify=True 
        else: 
            print('your parents probably hate you') 
            rollify=False 

    elif stuff=='5': 
        probcinco=(raw_input("can you solve: sqrt(-1)")) 
        if probcinco=='i': 
            print('wow you must be a genius') 
            rollify=True 
        else: 
            print('L') 
            rollify=False 

在这里使用

elif guess>rand: 
   print('HALT! YOU MAY PROCEED ONLY IF YOU...') 

    mathproblem(oof) 

oof=random.randint(min,max) 所以每隔几次就会一遍又一遍地发出同样的问题,有什么方法可以让它更随意吗? 编辑:抱歉少年的边缘;)

1 个答案:

答案 0 :(得分:1)

"更随机"绝对不是你要求的。

但我相信你想要的行为是这样的:

def not_really_random(r_min, r_max):
    seq = range(r_min, r_max+1)
    while True:
        random.shuffle(seq)
        for n in seq:
            yield n


for oof in not_really_random(a, b):
    mathproblem(oof)

这将基本上循环通过随机顺序中的所有不同问题(在经历所有问题之后,它会在你看到的最后一个问题上再次开始)