2017-03-26 46 views
-1

這是我的家庭作業:如何解決這個隨機數的Python作業?

收件,在範圍[0重複地產生的隨機整數,N [,直到兩個連續產生的數字是identical.then返回生成的數字的數目的函數。

這裏是我做過什麼:

def function(n): 
    for i in range(100): 
     random.randint(0,n) 

這個輸出百位數字,但我需要它停止當它檢測到兩個完全相同的數字,怎麼做呢?

+0

歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [在主題](http://stackoverflow.com/help/on-topic)和[如何問](http://stackoverflow.com/help/how-to-ask)在這裏適用。 StackOverflow不是一個編碼或教程服務。 – AChampion

+0

@trincot:是的,我剛剛注意到了。那麼在這種情況下,您只需保存一個存儲以前生成的變量。 –

+0

使用兩個變量,一個用於最新的隨機數,另一個用於前一個。 – trincot

回答

1

爲此,您可以使用兩個名稱:一個用於新生成的隨機數,另一個用於前一個。

你也需要讓你的循環不同,因爲你不知道它需要多長時間得到一個賽前迭代:

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

+0

工程就像一個魅力,感謝您的幫助! – Theboss2222

0

要做到這一點,而不分配ab奇怪的值,使用無限循環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)