正态分布的概率密度函数python_如何实现高斯分布的概率密度函数
最后我使用了@sascha的建议。我查看了this维基百科文章和Numpy源代码,发现了这个randomkit.c文件,它实现了函数rk_gauss(它实现了Box-Muller变换)、rk_double和{}(它实现了模拟均匀分布随机变量的Mersenne Twister随机数生成器,由Box-Muller变换所需)。在
然后,我从here改编了Mersenne扭曲器生成器,并实现了Box-Muller变换来模拟高斯(关于随机扭曲生成器here)的更多信息。在
下面是我最后编写的代码:import numpy as np
from datetime import datetime
import matplotlib.pyplot as plt
class Distribution():
def __init__(self):
pass
def plot(self, number_of_samples=100000):
# the histogram of the data
n, bins, patches = plt.hist([self.sample() for i in range(number_of_samples)], 100, normed=1, facecolor='g', alpha=0.75)
plt.show()
def sample(self):
# dummy sample function (to be overridden)
return 1
class Uniform_distribution(Distribution):
# Create a length 624 list to store the state of the generator
MT = [0 for i in xrange(624)]
index = 0
# To get last 32 bits
bitmask_1 = (2 ** 32) - 1
# To get 32. bit
bitmask_2 = 2 ** 31
# To get last 31 bits
bitmask_3 = (2 ** 31) - 1
def __init__(self, seed):
self.initialize_generator(seed)
def initialize_generator(self, seed):
"Initialize the generator from a seed"
global MT
global bitmask_1
MT[0] = seed
for i in xrange(1,624):
MT[i] = ((1812433253 * MT[i-1]) ^ ((MT[i-1] >> 30) + i)) & bitmask_1
def generate_numbers(self):
"Generate an array of 624 untempered numbers"
global MT
for i in xrange(624):
y = (MT[i] & bitmask_2) + (MT[(i + 1 ) % 624] & bitmask_3)
MT[i] = MT[(i + 397) % 624] ^ (y >> 1)
if y % 2 != 0:
MT[i] ^= 2567483615
def sample(self):
"""
Extract a tempered pseudorandom number based on the index-th value,
calling generate_numbers() every 624 numbers
"""
global index
global MT
if index == 0:
self.generate_numbers()
y = MT[index]
y ^= y >> 11
y ^= (y << 7) & 2636928640
y ^= (y << 15) & 4022730752
y ^= y >> 18
index = (index + 1) % 624
# divide by 4294967296, which is the largest 32 bit number
# to normalize the output value to the range [0,1]
return y*1.0/4294967296
class Norm(Distribution):
def __init__(self, mu=0, sigma_sq=1):
self.mu = mu
self.sigma_sq = sigma_sq
self.uniform_distribution_1 = Uniform_distribution(datetime.now().microsecond)
self.uniform_distribution_2 = Uniform_distribution(datetime.now().microsecond)
# some initialization if necessary
def sample(self):
# generate a sample, where the value of the sample being generated
# is distributed according a normal distribution with a particular
# mean and variance
u = self.uniform_distribution_1.sample()
v = self.uniform_distribution_2.sample()
return ((self.sigma_sq**0.5)*((-2*np.log(u))**0.5)*np.cos(2*np.pi*v)) + self.mu
这是完美的工作,并产生一个相当好的高斯
^{pr2}$
正态分布的概率密度函数python_如何实现高斯分布的概率密度函数相关推荐
- 【机器学习】【ICA-1】概率统计/代数知识详解:高斯分布、概率密度函数、累积分布函数、联合分布函数、复合函数的概率密度函数、行列式求导等
要容易理解ICA,就需要先好好理解透彻下面这些概率统计和线性代数的知识点:高斯分布.概率密度函数.累积分布函数.复合函数的概率密度函数.行列式.代数余子式.矩阵微积分等.下面一一简单记录和复习下这些概 ...
- 二维正态分布的最大似然估计_最大似然估计-高斯分布
前言:介绍了最简单的 问题 (这里都是玩具数据,为了方便理解才列出) 0123456789101112 X 1 2 3 4 4.2 4.4 4.6 4.8 5 6 7 8 y 0 0 0 0 1 1 ...
- ROC曲线是通过样本点分类概率画出的 例如某一个sample预测为1概率为0.6 预测为0概率0.4这样画出来,此外如果曲线不是特别平滑的话,那么很可能存在过拟合的情况...
ROC和AUC介绍以及如何计算AUC from:http://alexkong.net/2013/06/introduction-to-auc-and-roc/ ROC(Receiver Operat ...
- 【读书笔记->统计学】04-02 利用概率理论预测和决策-条件概率、概率树、全概率公式、贝叶斯定理、相关与独立概念简介
条件概率 现在书给我们提供了一个情境:已知下一次小球会停在黑色球位,赌小球会不会停在偶数球位上. 由于我们已经知道小球停在黑色球位,那么小球一定不会停在绿色或红色球位了,但我们求概率的时候,相应的范围 ...
- 概率导论(一)——样本空间与概率
参考书:<概率导论>,作者:Dimitri P. Bertsekas,John N. Tsitsiklis. 本系列博客为自学<概率导论>笔记. 思维导图 集合 将一些研究对象 ...
- 概率题:掷一枚不均匀的硬币,正面概率为0.7,反面的概率为0.3,如何最高效地获得一个概率为0.5的事件?
题目 掷一枚不均匀的硬币,正面概率为0.7,反面的概率为0.3,如何最高效地获得一个概率为0.5的事件? 解答: 丢两次.正反的概率和反正的概率各为 0.3 * 0.7 = 0.21,正正和反反的情况 ...
- java判断五张牌中有一对,五张同花顺概率,52张扑克牌,任取5张牌,求出现一对、两对、同花顺的概率。 请帮忙解决一下这道概率题,求详细的列出式......
Q1:52张扑克牌,任取5张牌,求出现一对.两对.同花顺的概率. 请帮忙解决一下这道概率题,求详细的列出式... 给你三个式子:1*3/51*48/50*44/49*40/48这个是出现一对的概率 2 ...
- 算法-连胜概率问题-10把连胜3把概率
算法-连胜概率问题-10把连胜3把概率 有一位朋友突然问我一道连胜的概率问题,自己研究一下,和大家分享,同时记录一下. 问题描述 小明每天玩10盘王者荣耀,且胜负完全随机(胜率50%),请用JS写一个 ...
- 概率/离散型分布/连续型分布/概率密度函数
算概率首先要明确数据类型,因为数据类型会影响求概率的方式. 数据类型分为:1.离散型随机变量 2.连续型随机变量 离散型随机变量的取值为有限个或者无限可列个(整数集是典型的无限可列),这个算概率的时候 ...
最新文章
- 闪电网络运行过程中存在的一些问题
- C# xml文件的创建,修改和添加节点 。
- sublime用cmd窗口调试python_如何使用xdebug和sublime调试python脚本
- vue项目中简单进行axios封装及响应状态码提示!
- linux下怎么查看程序异常,linux程序莫名异常怎么查
- linux 静态库、共享库
- hdu acm2549
- 人人都该懂点儿TCP
- 如何在Kali Linux 2018上安装GeForce GTX 1060显卡驱动
- thinkphp mysql order_ThinkPHP中order()的使用方法
- [BZOJ4199][NOI2015]品酒大会-后缀数组
- 孩子学习arduino好还是单片机好
- MVP结合(RecycleView,Retorfit,GreenDao和EventBus)数据展示
- D. Shuffle(cf)暴力枚举 + 组合数学
- 在vue项目中引入JQuery
- 微拍堂积极践行社会责任,促进中国经济高质量发展
- 每日一讲:C语言getchar函数的用法
- 渝北统景碑口规划开发_渝北区御临河碑口水库主体工程开工建设
- jmeter压测学习10-linux上执行遇到的问题 There is insufficient memory for the Java Runtime Environment to continu
- python软件要钱吗-python 收费么
热门文章
- 【深度学习基础】张量的描述与深度学习常见张量
- 小白入门视频处理笔记:1. *.avi文件读入matlab后的数据结构
- Java-API-Package:org.springframework.web.bind.annotation
- oracle创建用户和角色、管理授权以及表空间操作
- 【输入法】Rime-中州韵 基本设置 附:官方定制指南
- nginx location 配置
- php的zend引擎执行过程 一
- Java中导入Excel文件
- 二叉树先序、中序、后序的递归算法---《数据结构》
- Java(2)数据类型转换、变量和常量