🚀 Fortuna 随机数生成函数文档
Fortuna 是一个多语言随机数生成库,支持 Python、C++ 和 Go 等多种编程语言。它提供了丰富的概率分布函数和统计工具,广泛应用于科学计算、数据分析、蒙特卡洛模拟等领域。
✨ 主要特性
- 多语言支持:提供多种语言的接口。
- 丰富的概率分布:涵盖连续和离散分布。
- 高效的算法:采用经过验证的随机数生成算法。
- 模块化设计:便于扩展和集成。
📦 安装指南
在 Python 中,可以通过以下命令安装:
pip install fortuna
💻 使用示例
基础用法
import Fortuna as fr
print(fr.uniform())
print(fr.normal(0, 1))
print(fr.coin(0.5))
高级用法
print(fr.bernoulli(0.7))
print(fr.binomial(10, 0.3))
print(fr.geometric(0.4))
print(fr.negative_binomial(3, 0.7))
print(fr.poisson(2.5))
print(fr.uniform(0, 5))
print(fr.normal(5, 2))
print(fr.exponential(0.5))
print(fr.pareto(2.5))
print(fr.weibull(3, 2))
print(fr.chi_squared(5))
print(fr.f_distribution(5, 10))
print(fr.t_distribution(3))
print(fr.log_normal(0, 0.5))
print(fr.cauchy(0, 2))
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()
随机数生成与统计模拟步骤
步骤 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 库来生成各种分布的随机数,并进行复杂的统计模拟。这对于科学研究、工程设计、金融建模等领域非常有用,能够帮助你做出更明智的数据驱动决策。