Python 生成一组具有给定数量的1、2、3和0的数字

Python 生成一组具有给定数量的1、2、3和0的数字,python,Python,我试图通过将输入输入到适当的位置并将列表输入到适当的位置来解析这些组件 我尝试了一些关于列表的代码,但这并没有达到我所寻求的结果。下面是我认为的基本框架,但当然它需要更多的帮助,包括sample1和sample2。当然,除非骨架必须更改为包含sample1和sample2列表 population = [] for i in range(10): population.extend([i]*10) import random random.sample(population,20)

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

我尝试了一些关于列表的代码,但这并没有达到我所寻求的结果。下面是我认为的基本框架,但当然它需要更多的帮助,包括sample1和sample2。当然,除非骨架必须更改为包含sample1和sample2列表

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

import random
random.sample(population,20)

我需要创建一个包含100个数字的列表(命名为list_all),其中包括10个1、10个2、10个3、…、和10个0。秩序不重要。创建两个随机样本,每个样本有20个数字,在这里进行采样而不进行替换(即,如果所有的数字都在sample1中,那么sample2中不应该有任何数字;换句话说,sample1和sample2的并集是list_all)。重要的是,我意识到这需要对上面看到的样本进行随机排列。

我建议生成一个包含所有所需数字的列表,然后使用或随机排列顺序。然后可以将前20个元素作为样本1,将下20个元素作为样本2

例如:

# 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]

有几种方法可以完成第一项任务所需的工作(创建列表)。我会先尝试列表理解。看一看

另一种简单的方法是创建一个包含所需元素的列表,并乘以所需元素重复的次数-虽然不美观,但适用于这种简单的情况(类似于数组)。

list\u all=list\u one*n

感谢您明天的编辑32,希望这能让我的意思更清楚。如果
list\u all
包含100个数字,而
sample1
sample2
每个只有20个数字,那么“sample1和
sample2
之和”怎么可能?你的意思是说
sample1
sample2
的总和包含在
列表中所有的
?@JackDorsey问题永远不会在这里“结束”,因为它们已经被回答了。人们总是可以自由地提交额外的答案,除非问题被标记为重复。作为询问者,您可以选择对您有效的答案作为标记其已解决的方式,但其他答案可能会继续提交。@JackDorsey,…另外,请注意,我们积极禁止删除好的内容。这既可以确保问题及其答案有助于我们的知识库供他人使用,也可以通过确保问题和答案的记录保持公开来阻止人们在作业中作弊。不需要使用
numpy
随机。shuffle
可以很好地完成工作。正确@明天32你知道他们是否在引擎盖下使用相同的伪随机数发生器吗?对于这个小列表,它应该不太重要,但可能是一些应用程序的考虑因素。