我有一個很難搞清楚如何下面的代碼工作:fizzbuzz在Python中使用隨機,它是如何工作的?
import random
for i in range(0, 100):
if not i % 15:
random.seed(1178741599)
print [i+1, "Fizz", "Buzz", "FizzBuzz"][random.randint(0,3)]
我明白,當i
是整除15
,random
將使用相同的seed
,因此randint(0, 3)
總是會返回相同的索引,但當我試圖
for i in range(100):
random.seed(1178741599)
print random.randint(0,3) #always print 0
上述代碼始終打印0
,不應它是(這是正確的行爲,並對應於3
(作爲"FizzBuzz"
的在升指數ist [i+1, "Fizz", "Buzz", "FizzBuzz"]
?i+1
在列表中。)
當i
是3
或5
整除怎麼樣?
什麼是種子1178741599
的神奇?
編輯:作爲jonrsharpe指出的那樣,fizzbuzz代碼只能在Python 2.x的
現在我有了一個更好的理解。因此,由於這個特殊種子的'魔術',它的前15個隨機整數正是fizzbuzz在[i + 1,Fizz,Buzz,FizzBuzz]中選取正確元素所需要的。我想你不應該得到'1',因爲'i + 1'的索引爲'0'。 –
這是正確的,但正如我剛剛添加它似乎並沒有工作在Python 3.x – jonrsharpe
我剛剛在Python 3.3中嘗試,你是對的,它總是產生'1' –