【问题标题】:python: random sample with probabilities [duplicate]python:具有概率的随机样本
【发布时间】:2015-06-08 04:39:24
【问题描述】:

假设我想创建一个从 [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))

【问题讨论】:

标签: python random probability sample weighted


【解决方案1】:

您可以在 [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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    相关资源
    最近更新 更多