2017-04-20 135 views
0

我刚刚开始使用Python,并遇到了一个问题。我正在写一个函数来模拟硬币翻转。 当我编写一些模拟代码来测试randint函数时,它工作得很好,并返回了一个很好的随机序列的头部和尾部。我尝试在我的程序中使用的代码只返回h或t。randint一遍又一遍地返回相同的数字

import random 

coin_sequence = "hhththththhhhttthht" 
generated_sequence = "" #define generated_sequence 
length = len(coin_sequence) 
flip = random.randint(0, 1) 
for value in range(length): 
    if flip == 0: 
     generated_sequence = generated_sequence + "t" 
    else: 
     generated_sequence = generated_sequence + "h" 

print(generated_sequence) 

我可能犯了一些非常愚蠢的错误。谁能帮我?

+2

'randint()'只被询问**一次**来产生一个数字。然后你再次检查同一个号码。 –

+0

您正在缓存'randint'的返回值,因此它永远不会重新生成新的数字。您必须再次调用它以获取新号码 – Li357

回答

2

你只能叫random.randint()一次,在循环开始之前:

flip = random.randint(0, 1) 
for value in range(length): 
    # ... 

这个调用返回一个整数对象。不管最初产生的是什么函数,在一个循环中一次又一次地检查该整数不会改变它的值。

如果你想获得新的随机数,问random.randint()产生一个在循环

for value in range(length): 
    flip = random.randint(0, 1) 
    if flip == 0: 
     generated_sequence = generated_sequence + "t" 
    else: 
     generated_sequence = generated_sequence + "h" 

需要注意的是,你可以多一点简洁写循环使用:

for value in range(length): 
    flip = random.randint(0, 1) 
    generated_sequence += "t" if flip == 0 else "h" 
相关问题