插入0和1的随机列表,其中包含一定数量的1

时间:2017-04-26 18:30:12

标签: python random

如何使用随机0和1值生成长度 N 的列表,但在列表中随机放置给定数量的1。

例如,我想要一个包含10个元素(0和1)的列表,列表中的1个数字为7。

我该怎么做?

4 个答案:

答案 0 :(得分:3)

您可以使列表具有正确的0和1的数字

data = [0] * 3 + [1] * 7

然后使用random.shuffle使其在列表中的位置随机

from random import shuffle
shuffle(data)
print data
  

[1,1,0,1,1,0,0,1,1,1]

答案 1 :(得分:1)

不使用random.shuffle的方法:

import random
random.sample([0]*3 + [1]*7, 10) # [1, 1, 1, 1, 0, 0, 0, 1, 1, 1]

答案 2 :(得分:1)

使用numpy

import numpy as np
from random import shuffle
A = np.ones(7, dtype=np.int)          // [1 1 1 1 1 1 1] and data-type as integer
B = np.zeros(3, dtype=np.int)         // [0 0 0] and data-type as integer
C = np.concatenate((A, B), axis = 0)  // [1 1 1 1 1 1 1 0 0 0]
shuffle(C)                            // [1 0 0 1 1 1 1 0 1 1]
print C

答案 3 :(得分:1)

我喜欢其他答案中的 shuffle()方法;但是,还有另一种使用较少调用随机数生成器的方法。从零列表开始。然后使用 sample()选择应设置为1的7个指标:

>>> from random import sample
>>> result = [0] * 10
>>> for i in sample(range(10), k=7):
        result[i] = 1

>>> result
[1, 0, 1, 1, 0, 1, 1, 1, 1, 0]