我有一个长度为x的数值向量,向量中的所有值当前都是0,我想让它随机分配这些值中的y等于1,这些值中的x-y等于0,有什么快速的方法吗?我现在最好的猜测是让一个RNG将每个值分配给0或1,然后对字符串求和,如果总和不等于y,则从头开始。我可以使用random.choice(vector,y),然后将选中的元素赋值为1吗?
46qrfjad1#
有一个函数叫做random.sample(),给定一个项目序列,它会给你随机选择的一定数量的项目.
random.sample()
import random for index in random.sample(xrange(len(vector)), y): # len(vector) is "x" vector[index] = 1
另一种方法是合并x 0和y 1的列表并将其混洗:
x
y
import random vector = [0]*(x-y) + [1]*y # We can do this because numbers are immutable vector.shuffle()
1条答案
按热度按时间46qrfjad1#
有一个函数叫做
random.sample()
,给定一个项目序列,它会给你随机选择的一定数量的项目.另一种方法是合并
x
0和y
1的列表并将其混洗: