2016-12-10 5 views
-1

このコードを実行すると、print(x)は毎回同じ文字を出力しますが、2番目の例のように実行すると、期待通りに動作します。違いはなんですか?私は "シード"への参照が見つかりましたが、それ以前にrandom.seed()を使用していないと答えました。random.choiceは、変数を使用すると同じ回答を示します

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 
+1

'x'を3回印刷する点は何ですか? –

+1

Pythonでは、 'x'は値が割り当てられます*。それは、その価値を持っている行と「生きている」接続を維持しません。 – usr2564301

+0

最初の3人は同じ答えを得て、後の3人は異なる答えを出すことを示すために、それぞれの数字は任意の数字にすることができます。 – Neal

答えて

0

random.choice(b)あなたはxに戻り値を代入するとき、それは再びあなたがその変数を参照するたびに呼び出されません。一度だけ呼び出されます。 xを印刷するたびに、その最初の割り当ての結果が表示されます。 print(random.choice(b))を実行すると、毎回がbにコールされています。変数に割り当てられた値が変数を参照するたびに変更された場合、実際にはかなり問題になります。

あなたはここで何をしているかとの大きな違いは本当にありません。

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

と何をここでやっている:

print(random.choice(b)) 

違いは、後者の3倍(すなわちを行うということですが、 random.choice()を3倍して3倍の結果を印刷すると、3つの異なる結果が表示されます。あなたがそうするなら:毎回異なった結果(または毎回ランダムな結果 - それは同じかもしれません)が表示されます:

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

毎回異なる結果が表示されます。 uは再び新しいランダム変数:)を生成するために、ランダム関数をコールしない限り、変数の値を変更しないであろう割り当てられた値を3回印刷することにより

0

0

違いは、最初のもの、x = random.choice(b)セットxをしますランダムに選択してbからランダムに選択された文字xを印刷します。 xを宣言すると、ランダムに選択するのはxです。第2のprint(random.choice(b))は毎回新しいランダムを生成します。

あなたはrandom.choiceにxが同じにするために、次のコードを使用することができます。

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

そして、それはprint(random.choice(b))と同じことを行います。

関連する問題