python - 如何使 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)
每隔几次它会一遍又一遍地发送同样的问题,有什么办法可以让这个更随机吗?编辑:对青少年的急躁感到抱歉;)
解决方案
“更随机”绝对不是你想要的。
但我相信你想要的行为是这样的:
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)
这基本上会以随机顺序循环遍历所有不同的问题(在解决所有问题后,它会从你看到的最后一个问题重新开始)
推荐阅读
- android - 当我引用一个没有用“@+id”标记的 id 时,为什么我没有收到错误消息?
- rest - 为不精确过滤设计端点的正确、RESTful 方式
- sql - IBM DB2 on Cloud - 运行 SQL 语句时缺少“结果集”选项卡
- elasticsearch - 如何按包含 ElasticSearch 中移动日期的派生值排序?
- angular - AngularFire2获取类型特定对象的Observable
- c++ - Boost 1.61 标头正在尝试重新定义 mpl_::bool_
- php - 为什么我不能识别假的?
- python - 在结构化数组中使用 numpy.datetime64 的 TypeError
- java - 使用抽象类和 super()
- arrays - 如何为配置单元表中的数组结构设置 Ranger 策略