我想知道什么是更优雅的(如果这个词在这种情况下合适的话)方法来不断生成一个随机数,直到它不在所使用的值集中。第一个选项是重复的,因为我们在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)
因为你无论如何都要做一些记忆,所以相反的方法更容易,记住未使用的东西。这解决了几个问题:您永远不需要重复随机生成,并且一个列表就足够了,这样您就不会得到集合的内存开销
然后每当你需要一个新的非重复随机数
相关问题 更多 >
编程相关推荐