我有一个长度为 x 的数字向量,向量中的所有值当前都是 0。我希望它随机分配这些值中的 y 等于 1,并且这些值中的 xy 等于 0。有什么快速的方法吗?我现在最好的猜测是让 RNG 将每个值分配给 0 或 1,对字符串求和,如果总和不等于 y,则重新开始。
我可以使用 random.choice(vector,y) 然后将选择的元素分配为等于 1 吗?
有一个名为的函数random.sample()
,给定一系列项目,它会返回一定数量的随机选择的项目。
import random
for index in random.sample(xrange(len(vector)), y): # len(vector) is "x"
vector[index] = 1
另一种方法是组合x
0 和y
1 的列表并随机播放:
import random
vector = [0]*(x-y) + [1]*y # We can do this because numbers are immutable
vector.shuffle()