這是我的家庭作業:如何解決這個隨機數的Python作業?
收件,在範圍[0重複地產生的隨機整數,N [,直到兩個連續產生的數字是identical.then返回生成的數字的數目的函數。
這裏是我做過什麼:
def function(n):
for i in range(100):
random.randint(0,n)
這個輸出百位數字,但我需要它停止當它檢測到兩個完全相同的數字,怎麼做呢?
這是我的家庭作業:如何解決這個隨機數的Python作業?
收件,在範圍[0重複地產生的隨機整數,N [,直到兩個連續產生的數字是identical.then返回生成的數字的數目的函數。
這裏是我做過什麼:
def function(n):
for i in range(100):
random.randint(0,n)
這個輸出百位數字,但我需要它停止當它檢測到兩個完全相同的數字,怎麼做呢?
爲此,您可以使用兩個名稱:一個用於新生成的隨機數,另一個用於前一個。
你也需要讓你的循環不同,因爲你不知道它需要多長時間得到一個賽前迭代:
import random
def function(n):
a = -2
b = -1
i = 0
while a != b:
a, b = random.randint(0,n), a
i += 1
return i
# Sample run
times = function(400)
print (times)
看到它運行在repl.it
工程就像一個魅力,感謝您的幫助! – Theboss2222
要做到這一點,而不分配a
和b
奇怪的值,使用無限循環while
,然後break
當值是相同的。這類似於@ trincot的解決方案:
import random
def function(n):
a = None
i = 0
while True:
a, b = random.randint(0,n), a
i += 1
if a == b:
return i
# Sample run
times = function(400)
print(times)
歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [在主題](http://stackoverflow.com/help/on-topic)和[如何問](http://stackoverflow.com/help/how-to-ask)在這裏適用。 StackOverflow不是一個編碼或教程服務。 – AChampion
@trincot:是的,我剛剛注意到了。那麼在這種情況下,您只需保存一個存儲以前生成的變量。 –
使用兩個變量,一個用於最新的隨機數,另一個用於前一個。 – trincot