我正在尝试在 Python 中模拟伯努利解析过程。我有一个 Matlab 示例。不管行话如何,我都会根据一些随机变量生成一个 0 和 1 的列向量。
num_trials = 1
b_energy_res = zeros(num_photon,num_trials);
for idx = 1:num_trials
energy_trial = randn(1,1)*energy_sigma+3*energy_sigma;
b_energy_res(:,idx) = rand(num_photons,1)>energy_trial;
end;
t = t+(1-b_energy_res)*1e9;
t = t/1e-12;
它将输出一些带有 0 和 1 的向量。
我尝试用 Python 做同样的事情,但我得到了错误。此外,我试图让 numpy 中的数组具有大约相同的 1 和 0 值频率。我可以做一个直方图来检查它们。我得到属性错误:
b_energy_res = np.zeros(num_photon)
energy_trial = np.random.standard_normal() * energy_sigma + 3 * energy_sigma
r = np.random.uniform(0.0,1.0,num_photon)
for i in xrange(int(num_photon)):
if r[i] > energy_trial[i]:
b_energy_res[i] = 1
t = t + (1-b_energy_res)*1e9
t = t*1e12
错误是:'float' 没有属性getitem
另外,这会产生我想要的吗?