bugfix> python > 投稿

私は支配的な相互作用が光電吸収である単一エネルギーガンマビームに関するコードを書いています、mu = 2 cm -1、50000個の乱数を生成し、相互作用の深さをサンプリングする必要があります(私がやったかどうかはわかりませんか否か)。 平均自由行程= mu-1であることは知っていますが、シミュレーションとmuから平均自由行程を見つけて比較する必要があります。

import random
import matplotlib.pyplot as plt
import numpy as np
mu=(2)
random.seed=()
data = np.random.randn(50000)*10
bins = np.arange(data.min(), data.max()+1e-8, 0.1)
meanfreepath = 1/mu
print(meanfreepath)
plt.hist(data, bins=bins)
plt.show()

回答 1 件
  • さて、相互作用の深さの分布は指数関数的な分布であり、ガウス分布ではありません。

    だからコードは

    lmbda = 2 # cm^-1
    beta  = 1.0/lmbda
    data = np.random.exponential(scale=beta, size=50000)
    mfp = np.mean(data)
    print(mfp)
    # build histogram
    
    

    詳細については、https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.random.exponential.htmlをご覧ください。

    上記のコード生成

    0.4977168417102998
    
    

    2のように見える-1 私に

あなたの答え