Saya memiliki distribusi energi hukum pangkat dan saya ingin memilih n energi acak berdasarkan distribusinya. Saya mencoba melakukan ini secara manual menggunakan nomor acak tetapi itu terlalu tidak efisien untuk apa yang ingin saya lakukan. Saya bertanya-tanya apakah ada metode di numpy (atau lainnya) yang berfungsi seperti numpy.random.normal
, kecuali alih-alih menggunakan distribusi normal, distribusinya dapat ditentukan. Jadi menurut saya contohnya mungkin terlihat seperti (mirip dengan numpy.random.normal):
import numpy as np
# Energies from within which I want values drawn
eMin = 50.
eMax = 2500.
# Amount of energies to be drawn
n = 10000
photons = []
for i in range(n):
# Method that I just made up which would work like random.normal,
# i.e. return an energy on the distribution based on its probability,
# but take a distribution other than a normal distribution
photons.append(np.random.distro(eMin, eMax, lambda e: e**(-1.)))
print(photons)
Pencetakan photons
akan memberi saya daftar sepanjang 10.000 yang diisi oleh energi dalam distribusi ini. Jika saya membuat histogram ini, nilai bin akan jauh lebih besar pada energi yang lebih rendah.
Saya tidak yakin apakah metode seperti itu ada tetapi sepertinya memang demikian adanya. Saya harap jelas apa yang ingin saya lakukan.
Sunting:
Saya telah melihat numpy.random.power
tetapi eksponen saya -1 jadi menurut saya ini tidak akan berhasil.