0

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

我可以使用 random.choice(vector,y) 然后将选择的元素分配为等于 1 吗?

4

1 回答 1

2

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

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

另一种方法是组合x0 和y1 的列表并随机播放:

import random
vector = [0]*(x-y) + [1]*y  # We can do this because numbers are immutable
vector.shuffle()
于 2013-07-19T02:23:20.427 回答