2
假設我想創建一個從[1,2,3]中選擇的N個元素樣本,使得1,2和3分別用權重0.4,0.4和0.2表示。我將如何做到這一點。python:概率的隨機樣本
我知道如何做到這一點R中不使用循環:
mySample <- sample(c(1,2,3),size = 100,replace=T,prob = c(.4,.4,.2))
假設我想創建一個從[1,2,3]中選擇的N個元素樣本,使得1,2和3分別用權重0.4,0.4和0.2表示。我將如何做到這一點。python:概率的隨機樣本
我知道如何做到這一點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;
http://stackoverflow.com/a/3679747/489590 – 2015-04-03 04:40:43