簡體   English   中英

在python中使用random.randint從列表中隨機選擇

[英]randomly choose from list using random.randint in python

如何使用random.randint()選擇python列表中給出的隨機名稱。

我想從該列表中打印5個名字。 實際上,我知道如何對數字使用random.randint() 但我不知道如何從給定列表中選擇隨機名稱。

我們不允許使用random.choice

請幫幫我

>>> population = range(10)

您可以使用random.sample嗎?

>>> names = random.sample(population, 5)
>>> names
[4, 0, 1, 2, 8]

僅使用random.randint會更困難,但是如果您必須這樣做,我會這樣做:

>>> names = [population[random.randint(0, len(population)-1)] for x in range(5)]
>>> names
[2, 8, 6, 6, 9]

但這顯然是要更換的。 如果您不想替換,則需要一些更復雜的代碼。 例如,一個函數:

def custom_sample(population, count):
    names = []
    already_used = []
    for x in range(count):
        temp_index = random.randint(0, len(population)-1)
        while temp_index in already_used:
            temp_index = random.randint(0, len(population)-1)
        names.append(population[temp_index])
        already_used.append(temp_index)
    return names

所以:

>>> names = custom_sample(population, 5)
>>> names
[7, 4, 8, 3, 0]

這不能保證沒有重復,因為random.choice更好。

import random
names = ["A", "B", "C", "D", "E", "F", "G", "H", "I"]
print([names[random.randint(0, len(names)-1)] for i in range(5)])

從列表中選擇隨機項目的最簡單方法是使用如下的random.randint()

假設您的清單是:

list_1 = ['cat', 'amusement park', 'bird watching']

然后您要隨機打印列表中的項目,

import random
print(list_1[random.randint(0,2)])

如果要使用random.randint()從列表中獲取隨機元素,則可以使用以下選項

list_name = [...]                                 # a sample list
size = len(list_name)                             # finding the length of the list
random_elemet = list_name[random.randint(0,size)] # get a random element

是的,對於來自一個總體的重復樣本,@ MaxLascombe的答案是可以的。 如果您不希望樣本中有圖塊,則應將所選的圖塊踢出去。 然后在其余列表上使用@MaxLascombe的答案。

暫無
暫無

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

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