我想知道是什么更优雅(如果这个词在这种情况下合适)继续生成随机数的方法,直到它不在使用的值集中。第一个选项是重复的,因为我们在 while 循环内部和外部都有相同的行。random type但是,第二个需要添加一个条件语句来中断循环。我知道这种特殊情况是微不足道的,两个版本都可以工作,但是在您看来,哪个看起来更Python/优雅?def orchestrator(image = None): used_values = set() for _ in range(7): toss = np.random.random() if toss >= 0.5: random_type = np.random.randint(1,7,1)[0] while random_type in used_values: random_type = np.random.randint(1,7,1)[0] used_values.add(random_type) print(random_type)def orchestrator(image = None): used_values = set() for _ in range(7): toss = np.random.random() if toss >= 0.5: while True: random_type = np.random.randint(1,7,1)[0] if random_type not in used_values: break used_values.add(random_type) print(random_type)蟒循环
1 回答
慕婉清6462132
TA贡献1804条经验 获得超2个赞
由于无论如何你都必须做一些记忆,所以走相反的道路更容易,记住未使用的东西。这解决了几个问题:你永远不需要重复随机生成,一个列表就足够了,所以你不会得到一个集合的内存开销。
from random import shuffle
unused_values = list(range(7))
shuffle(unused_values)
然后每当你需要一个新的非重复随机数时,
random_type = unused_values.pop()
添加回答
举报
0/150
提交
取消