繁体   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