python - 生成遵循概率分布的随机数
问题描述
我有一个从函数描述的概率分布,比方说一个高斯分布(带有系数1/sqrt(pi)
,这使得以下区域1
):
import math
D = lambda x: pow(math.e, -pow(x,2)) / math.sqrt(math.pi)
上一个函数将绘制下图
如果我使用该高斯函数作为概率分布,我0
将比任何其他数字更有可能收到回击。
有没有办法生成一个遵循该分布的随机数?
解决方案
一种方法是使用 scipy.stats。
我们从 rv_continuous 继承并指定概率密度函数_pdf
。接下来,我们使用继承的方法rvs()
来抽取一个随机样本。
import math
from scipy.stats import rv_continuous
class MyRandomVariable(rv_continuous):
def _pdf(self, x):
return pow(math.e, -pow(x,2)) / math.sqrt(math.pi)
my_random_variable = MyRandomVariable()
samples = [my_random_variable.rvs() for i in range(10)]
推荐阅读
- emacs - 如何从 emacs 中打开一长串文件
- java - 如何使用 Java 和 Eclipse 在 HTML 网站上启动 Jquery 事件?
- ubuntu-16.04 - 在 ubuntu 16.04 上安装 Mongo C 驱动程序时出现问题
- keyboard - 在 Compose 键的上下文中,“第 3 级”是什么意思?
- android - Can not resolve symbol CreateTodoInput
- sql - 使用外键创建表的标识符无效 SQL
- octobercms - 如何允许在 OctoberCMS 中上传大文件?
- google-api - 有没有办法(通过 API)确定用户的 Google 个人资料图片是否是 Google 的默认个人资料图片?
- angular - 单击按钮时如何防止表单输入字段被清除
- sql - 如何删除与 REFERENCE 冲突的 DELETE 语句