【发布时间】:2020-08-19 23:33:18
【问题描述】:
我正在尝试形成一个随机变量的分布。其中反应触发的概率为:
概率(Rj 着火)= aj/a0
aj = 一个倾向函数,描述在给定时间段内单个反应触发的概率。
a0 = 系统中所有反应的所有倾向函数之和。
目前我有一个函数,它返回系统中每个反应的倾向函数数组,输出:
[32. 0. 0.]
然后我使用 a0 = sum(propensity) 来计算 a0。接下来是第二个函数:
def prob_rxn_fires(propensity, a0):
prob = propensity/a0
return prob
为了计算 aj/a0,将此函数的输出分配给变量:rxn_probability。 我的系统中有三个反应,我现在正在尝试使用 scipy.stats.rv_discrete 从分布中采样。
我将系统中的反应数量存储在数组中:
num_rxn = np.arange(1, rxn_probability.size + 1).reshape(rxn_probability.shape)
它的形状和大小总是与 rxn_probability 数组匹配。
我现在的代码是:
j = stats.rv_discrete(name="Reaction index", values=(num_rxn, rxn_probability)).rvs()
但输出始终为 1,我不确定这是否正确,如果不是,为什么它不正确?
干杯
【问题讨论】:
标签: python arrays scipy statistics