首页 > 解决方案 > 如何使 random.randint() 更随机

问题描述

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

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) 每隔几次它会一遍又一遍地发送同样的问题,有什么办法可以让这个更随机吗?编辑:对青少年的急躁感到抱歉;)

标签: python

解决方案


“更随机”绝对不是你想要的。

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

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)

这基本上会以随机顺序循环遍历所有不同的问题(在解决所有问题后,它会从你看到的最后一个问题重新开始)


推荐阅读