【发布时间】:2021-02-04 15:37:59
【问题描述】:
我有以下代码,我在其中尝试根据分布类型和所述分布的参数构建一个随机数对象。该代码的工作原理是它生成一个包含 10,000 个均匀分布点的对象。
import numpy as np
rngSeed = 654 # Random seed for reproducibility
numSimulations = 10_000
def get_rand_unif(min_value, max_value, n_samples=1_000):
"""
This function generates a random number [nd]array of size [n_samples]
from a uniform distribution between the two input values
[min_value, max_value)
Args:
- min_value (float)
- max_value (float)
- n_samples (int)
Return:
- Random number [nd]array of [n_samples] between this range (float)
"""
return np.random.default_rng(rngSeed).uniform(min_value, max_value, n_samples)
def get_rand_norm(mean, std_dev, n_samples=1_000):
"""
This function generates a random number [nd]array of size [n_samples]
from a normal distribution with a mean of [mean] and a standard deviation
of [std_dev].
Args:
- mean(float)
- std_dev (float)
- n_samples (int)
Return:
- Random number [nd]array of [n_samples] from a normal distribution (float)
"""
return np.random.default_rng(rngSeed).normal(mean, std_dev, n_samples)
class InVar:
def __init__(self, *parms):
self.rndData = self.get_disto(*parms)
def get_disto(self, *parms):
distR = {
"unif": get_rand_unif(parms[1], parms[2], numSimulations),
"norm": get_rand_norm(parms[1], parms[2], numSimulations),
}
return distR.get(parms[0])
def rand_data(self):
return self.rndData
p1 = InVar("unif", 0, 1)
但是,当我调试代码时,我注意到正在为均匀 和 正态分布计算随机值。我想知道如何更改我的代码,以便只执行与被调用键对应的函数。虽然是轶事,但我担心如果我要引入需要两个以上参数的额外概率分布,我会遇到麻烦。
【问题讨论】:
-
当你实例化你的类时,它的 init 会被执行。这会导致 get_distro 被调用,进而构建/计算 distR 字典。所述字典包含两个分布..
标签: python class dictionary