假设我想创建一个样本,从[1,2,3]中选择N个元素,并使1,2和3分别以0.4、0.4和0.2的权重表示。我该如何实现?
我知道在R中如何不使用循环完成此操作:
我知道在R中如何不使用循环完成此操作:
mySample <- sample(c(1,2,3),size = 100,replace=T,prob = c(.4,.4,.2))
mySample <- sample(c(1,2,3),size = 100,replace=T,prob = c(.4,.4,.2))
您可以生成一个在[0,1)范围内的随机数,如果它在[0,.4)范围内,则选择“1”,否则,如果它在[.4,.8)范围内,则选择“2”,否则选择“3”。代码如下:
from random import random;
N = 10;
elements = [1,2,3];
weights = [.4, .4 , .2];
samples = range(N);
r = 0;
temp = 0;
for i in range(10):
r = random();
temp = 0;
for j in range(len(elements)):
temp += weights[j];
if(temp>r):
samples[i] = elements[j];
break;