如何生成随机整数列表,但仅使用指定的整数?(Python)

7

这个问题可以推广到随机创建一个大小为n的列表,包含预先指定的整数(假设服从均匀分布)。希望看起来像下面这样:

也许语法会像这样:

randList([list of integers], size)

然后可以产生类似以下的内容:
randList([1,-1], 7)
>>> [1,-1,1,-1,-1,-1,1] #(random)

或者
randList([2,3,4], 10)
>>> [4,3,4,2,2,4,2,3,4,3] #(random)

我对Python还有点陌生,到处都返回一个低值和高值之间的范围,而不是具体的值。谢谢


5
听起来你需要使用 random.choice - Morgan Thrapp
然后制作一个循环并每次附加? - J. Davis
3
使用列表推导式会比使用 for 循环更加习惯:[random.choice(seq) for _ in range(10)] 或者其他类似的形式,其中 seq 是您的候选值列表。 - Peter DeGlopper
3个回答

7
vals = [random.choice(integers) for _ in range(num_ints)]

3
这是一个完整可运行的示例。您只需要用您想要选择的数字列表替换 choices 的值,将 range(10) 替换为 range(number_of_items_i_want) 即可。
import random
choices = list(range(10))
random_sample = [random.choice(choices) for _ in range(10)]

如果您希望将此作为函数以便重复使用,这是一种简单的方法:
import random
def random_list(choices, size):
    return [random.choice(choices) for _ in range(size)]

1
您想使用 random.choice,请参阅 此 SO 答案 进行讨论。
然而,即使您只能在范围内取值:

我对 Python 有点陌生,但无论我看哪里,它总是返回一个低值和高值之间的值范围

...您仍然可以实现您想要的功能,只需假设低/高限制为0->列表的大小,然后使用在该范围内生成的每个随机整数,取该索引处的数字。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接