Jak wygenerować wartości zmiennej losowej o dowolnym rozkładzie?

korzystając z predefiniowanych rozkładów

Wykorzystujemy moduł scipy.stats, podobnie jak w przypadku generowania z rozkładu jednorodnego (punkt c), tylko w miejsce „uniform” wpisujemy symbol odpowiedniego rozkładu. Wywołanie ma postać:

x = scipy.stats.SymbolRozkładu(ParametryRozkładu).rvs(size=IleLiczb)

Możemy zapisać generator jako osobną zmienną, np. do późniejszego wykorzystania:

generator = scipy.stats.SymbolRozkładu(ParametryRozkładu)
x = generator.rvs(size=IleLiczb)

Alternatywnie, parametry rozkładu możemy podać do funkcji rvs:

x = scipy.stats.SymbolRozkładu.rvs(ParametryRozkładu, size=IleLiczb)

Jeżeli pominiemy parametr „size”, otrzymamy pojedynczą wartość zamiast tablicy. Parametry rozkładu (kolejność jest tu istotna) są różne dla poszczególnych rozkładów, a jeśli ich nie podamy zostaną przyjęte parametry domyślne (np. \(\mu=0\) i \(\sigma=1\) dla rozkładu normalnego).

import scipy  # wystarczy nawet import scipy.stats

# generujemy jedną liczbę o rozkładzie normalnym z mu=0 sigma=1
x = scipy.stats.norm.rvs()

# generujemy jedną liczbę o rozkładzie normalnym z mu=5 sigma=0.1
x = scipy.stats.norm(5,0.1).rvs()

# generujemy tablicę czterech liczb o rozkładzie t-Studenta z 9 stopniami swobody
x = scipy.stats.t(9).rvs(size=4)

# generujemy tablicę trzech liczb o rozkładzie dwumianowym przy 10 próbach i prawdopodobieństwie sukcesu 0.2
x = scipy.stats.binom(10,0.2).rvs(size=3)
autor: Piotr Różański, ostatnia modyfikacja: 10.04.2016