如何在python中使用两个值之间的正常随机Beta?

时间:2014-05-16 21:52:23

标签: python numpy random

我想在python中进行随机beta,就像两个极值之间的正常值一样(例如:800/1000)。我使用numpy random.beta这个代码。我的问题是,我没有标准化的最小值和最大值,我希望保持价值的形状。

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
import numpy as np
import math
from random import gauss
#####################################
# Parameters definition
n=100.
#deviation de 20 %
n_min = n - n*0.2
n_max = n + n*0.2
var_n_min = 100000.
var_n_max = 0.
m=100000
for i in range (0,m):
    alea_var_n.append(np.random.beta(50,70))
    alea_var_tau.append(np.random.beta(50,70))
    if var_n_min > alea_var_n[i] :
       var_n_min = alea_var_n[i]
    if var_n_max < alea_var_n[i] :
       var_n_max = alea_var_n[i]

for i in range (0,m):
# Normalize 
    alea_var_n[i] = n_min +  alea_var_n[i] * (n_max- n_min)/(var_n_max + var_n_min)

1 个答案:

答案 0 :(得分:1)

numpy's random.beta会给出0到1之间的值,因此要在xy之间应用相同的分配,您只需执行以下操作:

z = x + (np.random.beta(a, b) * (y - x))