🚀 Fortuna 隨機數生成函數文檔
Fortuna
是一個多語言隨機數生成庫,支持 Python、C++ 和 Go 等多種編程語言。它提供豐富的概率分佈函數與統計工具,廣泛應用於科學計算、數據分析、蒙特卡洛模擬等領域。
🚀 快速開始
Fortuna
是一個強大的多語言隨機數生成庫,支持 Python、C++ 和 Go 等多種編程語言。它提供了豐富的概率分佈函數和統計工具,適用於科學計算、數據分析、蒙特卡洛模擬等領域。以下是使用 Fortuna
的基本步驟:
- 安裝
Fortuna
庫。
- 導入所需的模塊。
- 調用相應的函數生成隨機數或進行統計分析。
✨ 主要特性
- 多語言支持:提供多種語言的接口。
- 豐富的概率分佈:涵蓋連續和離散分佈。
- 高效的算法:採用經過驗證的隨機數生成算法。
- 模塊化設計:便於擴展和集成。
📦 安裝指南
在 Python 中,可以通過以下命令安裝 Fortuna
:
pip install fortuna
💻 使用示例
基礎用法
均勻分佈
import Fortuna as fr
print(fr.uniform())
正態分佈
import Fortuna as fr
print(fr.normal(0, 1))
拋硬幣
import Fortuna as fr
print(fr.coin(0.5))
高級用法
具體分佈函數
離散分佈
print(fr.bernoulli(0.7))
- 二項分佈
- 描述:生成一個二項分佈隨機變量。
- 參數:
n
(int) – 試驗次數。
p
(float) – 每次成功的概率,默認為0.5。
- 示例
print(fr.binomial(10, 0.3))
- 幾何分佈
- 描述:生成一個幾何分佈隨機變量,表示成功前的失敗次數。
- 參數:
- 示例
print(fr.geometric(0.4))
- 負二項分佈
- 描述:生成一個負二項分佈隨機變量,表示r次成功前的失敗次數。
- 參數:
r
(int) – 成功次數。
p
(float) – 每次成功的概率,默認為0.5。
- 示例
print(fr.negative_binomial(3, 0.7))
- 泊松分佈
- 描述:生成一個泊松分佈隨機變量,表示單位時間內的事件發生次數。
- 參數:
lambda
(float) – 平均率,默認為1.0。
- 示例
print(fr.poisson(2.5))
連續分佈
- 均勻分佈
- 描述:生成一個均勻分佈在區間[low, high)的隨機變量。
- 參數:
a
(float) – 區間的下界,默認為0.0。
b
(float) – 區間的上界,默認為1.0。
- 示例
print(fr.uniform(0, 5))
- 正態分佈
- 描述:生成一個正態分佈隨機變量,也稱為高斯分佈。
- 參數:
mean
(float) – 分佈的均值,默認為0.0。
std_dev
(float) – 分佈的標準差,默認為1.0。
- 示例
print(fr.normal(5, 2))
- 指數分佈
- 描述:生成一個指數分佈隨機變量,常用於模擬事件之間的等待時間。
- 參數:
lambda
(float) – 平均率,默認為1.0。
- 示例
print(fr.exponential(0.5))
- 帕累託分佈
- 描述:生成一個帕累託分佈隨機變量,常用於模擬自然和社會現象中的長尾分佈。
- 參數:
shape
(float) – 分佈的形狀參數,默認為2.0。
- 示例
print(fr.pareto(2.5))
- 布爾分佈
- 描述:生成一個威布爾分佈隨機變量,常用於可靠性工程和風速分析。
- 參數:
shape
(float) – 分佈的形狀參數,默認為2.0。
scale
(float) – 分佈的尺度參數,默認為1.0。
- 示例
print(fr.weibull(3, 2))
- 卡方分佈
- 描述:生成一個卡方分佈隨機變量,常用於統計推斷。
- 參數:
degrees_of_freedom
(int) – 自由度,默認為1.
- 示例
print(fr.chi_squared(5))
- F 分佈
- 描述:生成一個F分佈隨機變量,常用於方差分析。
- 參數:
numerator_dof
(int) – 分子自由度。
denominator_dof
(int) – 分母自由度。
- 示例
print(fr.f_distribution(5, 10))
- t 分佈
- 描述:生成一個t分佈隨機變量,常用於小樣本統計推斷。
- 參數:
degrees_of_freedom
(int) – 自由度,默認為1.
- 示例
print(fr.t_distribution(3))
- 對數正態分佈
- 描述:生成一個對數正態分佈隨機變量,常用於模擬乘積或增長率。
- 參數:
mu
(float) – 對數的均值,默認為0.0。
sigma
(float) – 對數的標準差,默認為1.0。
- 示例
print(fr.log_normal(0, 0.5))
- 柯西分佈
- 描述:生成一個柯西分佈隨機變量,是一種高尾分佈。
- 參數:
location
(float) – 分佈的位置,默認為0.0。
scale
(float) – 分佈的尺度,默認為1.0。
- 示例
print(fr.cauchy(0, 2))
- 貝塔分佈
- 描述:生成一個貝塔分佈隨機變量,常用於模擬概率密度函數。
- 參數:
alpha
(float) – 第一形狀參數,默認為1.0。
beta
(float) – 第二形狀參數,默認為1.0。
- 示例
print(fr.beta(2, 5))
統計工具
隨機抽樣
import numpy as np
population = np.array([10, 20, 30, 40, 50])
print(fr.sample(population, 3))
population = {'A': [1, 2, 3], 'B': [4, 5, 6]}
print(fr.stratified_sample(population, 2))
假檢驗驗
sample = [1.2, 1.5, 2.0, 2.5, 3.0]
print(fr.kolmogorov_smirnov_test(sample))
sample = [1.2, 1.5, 2.0, 2.5, 3.0]
print(fr.shapiro_wilk_test(sample))
統計建模
import pandas as pd
data = {'x': [1, 2, 3, 4, 5], 'y': [2, 3, 5, 6, 7]}
df = pd.DataFrame(data)
model = fr.linear_regression(df, 'x', 'y')
print(model.summary())
data = {'x': [1, 2, 3, 4, 5], 'y': [0, 0, 1, 1, 1]}
df = pd.DataFrame(data)
model = fr.logistic_regression(df, 'x', 'y')
print(model.summary())
示例
蒙特卡洛模擬
import numpy as np
def roll_dice():
return np.random.randint(1, 7)
results = [roll_dice() for _ in range(10000)]
print(f"Mean: {np.mean(results)}, Variance: {np.var(results)}")
風險管理
import numpy as np
import matplotlib.pyplot as plt
returns = np.random.normal(loc=0.05, scale=0.1, size=1000)
portfolio_value = 1000 * (1 + returns).cumprod()
print(f"Expected Return: {np.mean(returns)*100}%, Volatility: {np.std(returns)*100}%")
plt.plot(portfolio_value)
plt.show()
質量控制
import numpy as np
import matplotlib.pyplot as plt
sample_size = 50
defects = np.random.binomial(n=10, p=0.05, size=100)
control_limits = fr.control_limits(sample_size, defects)
print(f"Upper Control Limit: {control_limits[0]}, Lower Control Limit: {control_limits[1]}")
plt.plot(defects)
plt.axhline(y=control_limits[0], color='red')
plt.axhline(y=control_limits[1], color='red')
plt.show()
結論
隨機數生成和統計模擬在科學研究、工程設計、金融分析等多個領域發揮著重要作用。通過使用 NumPy 和 Fortuna
這樣的庫,我們可以高效地進行數據採樣和建模,從而為決策提供可靠的支持。
為了有效地生成隨機數並進行各種統計模擬,我們推薦使用以下幾個步驟:
步驟 1: 安裝必要的庫
首先,確保安裝了 NumPy 和 Fortuna
庫。這些庫提供了豐富的函數來生成不同分佈的隨機數,並進行統計分析。
pip install numpy fortuna
步驟 2: 導入所需的庫
在你的 Python 腳本中導入 NumPy 和 Fortuna
:
import numpy as np
from fortuna import random, distributions
步驟 3: 生成均勻分佈的隨機數
使用 random.uniform
函數生成均勻分佈在區間 [0,1) 的隨機數。
single_random = random.uniform()
print(f"Single Uniform Random Number: {single_random}")
array_random = random.uniform(size=5)
print("\nArray of Uniform Random Numbers:")
print(array_random)
步驟 4: 生成正態分佈的隨機數
使用 random.normal
函數生成均值為 0,標準差為 1 的正態分佈隨機數。
single_normal = random.normal()
print(f"\nSingle Normal Random Number: {single_normal}")
array_normal = random.normal(size=5)
print("\nArray of Normal Random Numbers:")
print(array_normal)
步驟 5: 生成自定義分佈的隨機數
你可以通過傳遞概率質量函數(PMF)或概率密度函數(PDF)來生成自定義分佈的隨機數。
pmf = np.array([1/6, 1/6, 1/6, 1/6, 1/6, 1/6])
custom_discrete = distributions.Categorical(pmf)
discrete_random = custom_discrete.sample(size=5)
print("\nCustom Discrete Random Numbers:")
print(discrete_random)
lambda_param = 0.5
pdf = lambda x: lambda_param * np.exp(-lambda_param * x)
custom_continuous = distributions.CustomDistribution(pdf)
continuous_random = custom_continuous.sample(size=5)
print("\nCustom Continuous Random Numbers:")
print(continuous_random)
步驟 6: 進行統計模擬
利用生成的隨機數進行各種統計模擬,例如蒙特卡洛積分、風險分析或假設檢驗。
def monte_carlo_pi(n_samples):
random_points = random.uniform(low=-1, high=1, size=(n_samples, 2))
inside_circle = (random_points[:, 0]**2 + random_points[:, 1]**2) <= 1
return np.mean(inside_circle) * 4
n_samples = 10000
pi_estimation = monte_carlo_pi(n_samples)
print(f"\nMonte Carlo Estimation of π with {n_samples} samples: {pi_estimation}")
步驟 7: 可視化結果
使用 matplotlib 來可視化生成的隨機數或模擬結果。
import matplotlib.pyplot as plt
plt.hist(array_normal, bins=15, density=True, alpha=0.6, color='b')
plt.title('Normal Distribution Sample')
plt.xlabel('Value')
plt.ylabel('Probability Density')
plt.show()
points = random.uniform(low=-1, high=1, size=(n_samples, 2))
inside = points[points[:, 0]**2 + points[:, 1]**2 <= 1]
outside = points[points[:, 0]**2 + points[:, 1]**2 > 1]
plt.scatter(inside[:, 0], inside[:, 1], color='blue', alpha=0.5)
plt.scatter(outside[:, 0], outside[:, 1], color='red', alpha=0.5)
plt.title('Monte Carlo Integration for π')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()
步驟 8: 結果分析
根據生成的隨機數和模擬結果,進行統計分析,例如計算均值、方差或其他所需的統計量,並根據需要調整參數或算法。
總結
通過上述步驟,你可以有效地利用 NumPy 和 Fortuna
庫來生成各種分佈的隨機數,並進行復雜的統計模擬。這對於科學研究、工程設計、金融建模等領域非常有用,能夠幫助你做出更明智的數據驅動決策。