在python中挑选子集并更改子集的值

时间:2013-07-19 02:20:17

标签: python choice

我有一个长度为x的数值向量,向量中的所有值都是0.我希望它随机将这些值的y分配给等于1,并且这些值的xy等于0.任何快速的方法都可以做到这一点?我现在最好的猜测是让一个RNG将每个值分配给0或1,总结字符串,如果总和不等于y,则重新开始。

我可以使用random.choice(vector,y)然后将拾取的元素分配给1吗?

1 个答案:

答案 0 :(得分:2)

这是一个名为random.sample()的函数,在给定一系列项目的情况下,它会返回一定数量的随机选择。

import random
for index in random.sample(xrange(len(vector)), y): # len(vector) is "x"
    vector[index] = 1

另一种方法是组合x 0&{39}和y 1&#39的列表并将其改组:

import random
vector = [0]*(x-y) + [1]*y  # We can do this because numbers are immutable
vector.shuffle()