簡體   English   中英

For-Loop中不需要的隨機迭代器

[英]Unwanted random iterator in For-Loop

我試圖創建一個函數來生成兩個其他值(startFrom和stopAt)之間的值集(numberToChoose),但由於某種原因,第二個for循環(第7行)中的迭代器(?),在這種情況下似乎似乎即使我沒有看到任何理由,也要隨機生成。

def chooseRandomNumbers(numbersToChoose, startFrom, stopAt):

 numbers = [(randrange(startFrom, stopAt))]  # initialize empty list of numbers

 for n in range(numbersToChoose-1):  # choose random number from 1 to 49 a total of 7 times
    x = randrange(startFrom, stopAt+1)
    for a in numbers:  # check for already existing elements in "numbers"
        if x == numbers[a]:  # if new random number already exists in "numbers" discard and run loop again
            n -= 1  # decreases n by 1 so a new (hopefully not already existing) number can be generated
        else:  # generated numbers does not exist in "numbers" yet
            numbers.append(x)  # appends randomly chosen number to list "numbers"

 return numbers  # returns said list "numbers"

任何關於如何處理這個問題的建議都非常感謝。 如果可能的話,請告訴我代碼中的任何其他內容(剛剛啟動python)。

您檢查生成的數字是否已在列表中的代碼是錯誤的。 for a in numbers ,在此循環中,您使用numbers[a]a是列表的成員但不是成員的索引。 使用in測試一個數字是否在名單:

來自隨機進口randrange

def chooseRandomNumbers(numbersToChoose, startFrom, stopAt):
     numbers = []
     for n in range(numbersToChoose):
        x = randrange(startFrom, stopAt+1)
        if not x in numbers:
            numbers.append(x)
        else:
            n -= 1
     return numbers

或者干脆:

from random import sample
def chooseRandomNumbers(numbersToChoose, startFrom, stopAt):
    return sample(range(startFrom,stopAt+1),numbersToChoose)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM