randint一遍又一遍地返回相同的数字

时间:2017-04-20 17:53:54

标签: python-3.x random

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

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)

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

1 个答案:

答案 0 :(得分: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"