如果使用变量,random.choice会显示相同的答案

时间:2016-12-10 01:15:02

标签: python random

当我运行此代码时,print(x)每次都会打印相同的字母,然而当我像第二个示例print(random.choice(b))那样运行它时,它会按预期工作。有什么不同?我检查了一个找到“播种”引用的答案,但我之前没有使用random.seed()

import random
b = "Hello World"
x = random.choice(b)
print(x)
print(x)
print(x)
# same answer as many times as you want to print
print(random.choice(b))
print(random.choice(b))
print(random.choice(b))
# random choice each time

3 个答案:

答案 0 :(得分:0)

当您将返回值分配给random.choice(b)时,

x只被调用一次,每次引用该变量时都不会再次调用它。每次打印x时,您都会看到初始分配的结果。执行print(random.choice(b))后,每次random.choice()都会调用b。如果每次引用变量时分配给变量的值都会发生变化,那确实会出现问题。

你在这里做的事情真的没什么区别:

x = random.choice(b)
print(x)

你在这做什么:

print(random.choice(b))

不同之处在于您执行后3次(即,您调用random.choice() 3x并打印结果3x),因此您会看到3个不同的结果。如果你这样做:

x = random.choice(b)
print(x)
x = random.choice(b)
print(x)
x = random.choice(b)
print(x)

每次都会看到不同的结果(或者每次至少有一个随机结果 - 它可能是相同的。)

答案 1 :(得分:0)

通过打印指定值3次不会改变变量的值,除非你再次调用随机函数生成一个新的随机变量:)

答案 2 :(得分:0)

不同之处在于,第一个x = random.choice(b)x设置为随机,然后打印x,这是从b中随机选择的字母。它只会在您声明x时随机选择x。第二个,print(random.choice(b))每次都会生成一个新的随机数。

您可以使用以下代码使x等于random.choice:

b = "Hello world!" 
x = random.choice
print(x(b))

这与print(random.choice(b))完全相同。