生成具有给定数量的1s,2s,3s和0的数字集

问题描述 投票:-1回答:2

我试图通过将输入输入适当的位置并将列表放入适当的位置来解决这些组件。

我已经尝试了一些关于列表的代码,但这并不等于我找到的结果。以下是我认为的基本骨架,但当然需要更多帮助,包括sample1和sample2。除非必须更改骨架以包含sample1和sample2列表。

population = []
for i in range(10):
    population.extend([i]*10)

import random
random.sample(population,20)

我需要创建一个100个数字的列表(名称为list_all),其中包括10个,10个,10个,3个,以及10个零。订单无关紧要。创建两个随机样本,每个样本包含20个数字,无需替换即可进行采样(即,如果所有数据最终都在sample1中,则sample2中不应存在任何数据;换句话说,sample1和sample2的并集是list_all) 。重要的是,我意识到这需要改组/随机化样本,这就是你在上面看到的。

python
2个回答
0
投票

有几种方法可以完成第一项任务所需的操作(创建list_all)。我会首先尝试列表推导。看看here

另一种简单的方法是创建一个包含所需元素的列表,并乘以您希望它们重复的次数 - 不是很漂亮,但适用于这种简单的情况(类似于数组)。 list_all = list_one * n


0
投票

我建议生成一个包含所需数字的单个列表,然后使用numpy.random.permutationrandom.shuffle随机化顺序。然后,您可以将前20个元素作为sample1,将接下来的20个元素作为sample2。

例如:

# create list
list_all = range(10)*10

# shuffle list
import numpy
new_list = numpy.random.permutation(list_all)
sample1 = new_list[0:20]
sample2 = new_list[20:40]
© www.soinside.com 2019 - 2024. All rights reserved.