在python中拾取子集并更改子集的值

50few1ms  于 2023-01-04  发布在  Python
关注(0)|答案(1)|浏览(108)

我有一个长度为x的数值向量,向量中的所有值当前都是0,我想让它随机分配这些值中的y等于1,这些值中的x-y等于0,有什么快速的方法吗?我现在最好的猜测是让一个RNG将每个值分配给0或1,然后对字符串求和,如果总和不等于y,则从头开始。
我可以使用random.choice(vector,y),然后将选中的元素赋值为1吗?

46qrfjad

46qrfjad1#

有一个函数叫做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()

相关问题