我有一个长度为x的数值向量,向量中的所有值都是0.我希望它随机将这些值的y分配给等于1,并且这些值的xy等于0.任何快速的方法都可以做到这一点?我现在最好的猜测是让一个RNG将每个值分配给0或1,总结字符串,如果总和不等于y,则重新开始。
我可以使用random.choice(vector,y)然后将拾取的元素分配给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()