python:具有概率的随机样本
python: random sample with probabilities
假设我想创建一个从 [1,2,3] 中选择的 N 个元素的样本,这样 1、2 和 3 将分别用权重 0.4、0.4 和 0.2 表示。我该怎么做。
我知道如何在不使用循环的情况下在 R 中做到这一点:
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;
假设我想创建一个从 [1,2,3] 中选择的 N 个元素的样本,这样 1、2 和 3 将分别用权重 0.4、0.4 和 0.2 表示。我该怎么做。
我知道如何在不使用循环的情况下在 R 中做到这一点:
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;