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

How to generate list of random integers, but only using specified integers? (Python)

本问题已经有最佳答案,请猛点这里访问。

这个问题可以概括为随机创建一个大小为n的列表,其中包含预先指定的整数(假设分布均匀)。希望如下所示:

也许语法看起来像

1
randList([list of integers], size)

这样就可以生产出以下产品:

1
2
randList([1,-1], 7)
>>> [1,-1,1,-1,-1,-1,1] #(random)

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

我对python有点陌生,在我看到的任何地方,它总是返回一系列介于低值和高值之间的值,而不是特定的值。谢谢


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

这是一个完全有效的例子。您只需将EDOCX1的值(1)替换为要从中选择的数字列表,并将range(10)替换为range(number_of_items_i_want)

1
2
3
import random
choices = list(range(10))
random_sample = [random.choice(choices) for _ in range(10)]

如果您希望将其作为一个函数来使用,这将是一种简单的方法:

1
2
3
import random
def random_list(choices, size):
    return [random.choice(choices) for _ in range(size)]


你想用random.choice,见此答案进行讨论。

但是,即使您只能在一个范围内执行值:

I am a bit new to python and everywhere I look it is always returning
a range of values between a low and a high

…你仍然可以在这里做你想做的,假设低/高的限制是0->你的列表的大小,然后在这个范围内生成每个随机的int,在索引处取这个数字。