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

Posted

技术标签:

【中文标题】如何生成随机整数列表,但仅使用指定的整数? (Python)[重复]【英文标题】:How to generate list of random integers, but only using specified integers? (Python) [duplicate] 【发布时间】:2015-12-27 11:38:14 【问题描述】:

这个问题可以概括为随机创建一个大小为 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 有点陌生,无论我在哪里看到它总是返回一个介于低和高之间的值范围,而不是特定值。谢谢

【问题讨论】:

听起来你需要random.choice 然后做一个循环,每次都追加? 列表推导比 for 循环更惯用 - [random.choice(seq) for _ in range(10)] 或其他东西,其中 seq 是您的候选值列表。 【参考方案1】:

这是一个完整的示例。您只需将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)]

【讨论】:

【参考方案2】:
vals = [random.choice(integers) for _ in range(num_ints)]

【讨论】:

【参考方案3】:

您想使用random.choice,请参阅this SO answer 进行讨论。

然而,即使你只能做一个范围内的值:

我对 python 有点陌生,无论我在哪里看到它总是返回 介于低值和高值之间的范围

...您仍然可以在这里做您想做的事,只需假设下限/上限为 0 -> 列表的大小,然后在该范围内生成每个随机 int,取数字 在那个索引处

【讨论】:

以上是关于如何生成随机整数列表,但仅使用指定的整数? (Python)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

随机整数列表

怎么用python生成随机的且不重复的整数?

编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数。

从相同索引的列表元素中选择随机整数并生成列表

python随机生成一个4位整数,求各个数位上的数字之和

python如何一次性取出多个随机数