前言

对于随机数平时我们还是比较常用的,一般都会直接通过各种语言原生自带的随机函数,比如 c++ 中有random()函数,java 中有 Random 类,python 有 random 模块等等。都能很方便生成随机变量,但它们有一个特点,那就是都服从均匀分布,而有些场景需要要生成不同分布的随机变量。

随机变量

随机变量即随机函数,通过该函数能生成每个可能事件对应的一个值。比如我们掷骰子,每次按一定的概率生成一个值。有两种类型变量,
* 离散型随机变量,能取到的不相同的值是有限个或可列无限多个。
* 连续型随机变量,能取到的值可以是连续的,在某个区间内可取任意一实数。

概率密度函数

主要用来表示不同点对应的概率大小,即X轴上每个单位长度对应的概率大小。概率等于面积,当某区间长度趋于0时则变为一个点,此时概率大小为f(x)。

常见分布

  • 伯努利分布,即0-1分布,随机变量为0或为1,概率为p和1-p。
  • 二项分布,进行n次伯努利实验,相对于不同成功次数对应的概率。
  • 泊松分布,是二项分布的极限形式。
  • 均匀分布,在相同长度间隔的分布概率是等可能的。
  • 正态分布,又名高斯分布,正态曲线呈钟型,两头低,中间高。
  • 指数分布,描述事件以恒定平均速率连续且独立地发生的过程的概率分布。
  • 逻辑斯蒂分布,增长分布,形状有点像正态分布。

生成分布算法

  • Inverse Transform Method,首先生成一个均匀分布的随机数,再求指定分布的分布函数F(x),然后求得F(x)的逆函数G(x),将随机数带入逆函数得到的即为指定分布的随机数。
  • Acceptance-Rejection Method,首先生成一个均匀分布随机数a,设概率密度函数为f(x),然后再生成一个均匀分布随机数b,若b<=f(a),则成功得到指定分布的随机数,否则从头开始。

实现

两种算法都比较容易理解,第一个需要求逆函数,有时并不好求,而第二个基本没什么限制,对于任何分布都能很完成任务。下面就用第二种方法实现生成几种分布的随机数。

正态分布

def normal_pdf(x, mu=0, sigma=1):return (1 / (math.sqrt(2 * math.pi) * sigma)) * (math.exp(-math.pow(x - mu, 2) / (2 * math.pow(sigma, 2))))def standard_normal_rand():while True:a = random.uniform(-4.0, 4.0)b = random.uniform(0.0, 3.0)if b < normal_pdf(a):return a, b

指数分布

def exponential_pdf(x, lam=1):return lam * math.exp(-lam * x)def exponential_rand():while True:a = random.uniform(0.0, 100.0)b = random.uniform(0.0, 3.0)if b <= exponential_pdf(a):return a, b

泊松分布

def poisson_pdf(x, lam=1):return (math.pow(lam, x) / math.factorial(x)) * math.exp(-lam)def poisson_rand():while True:a = random.randint(0, 50)b = random.uniform(0.0, 1.0)if b <= poisson_pdf(a):return a, b

github

https://github.com/sea-boat/MachineLearning_Lab/blob/master/distribution_gen.py

————-推荐阅读————

我的2017文章汇总——机器学习篇

我的2017文章汇总——Java及中间件

我的2017文章汇总——深度学习篇

我的2017文章汇总——JDK源码篇

我的2017文章汇总——自然语言处理篇

我的2017文章汇总——Java并发篇


跟我交流,向我提问:

公众号的菜单已分为“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”等,可能有一款适合你的胃口。

为什么写《Tomcat内核设计剖析》

欢迎关注:

如何生成指定分布的随机数相关推荐

  1. 如何产生指定分布的随机数?

    参考:https://www.cnblogs.com/xingshansi/p/6539319.html: https://www.jianshu.com/p/3d30070932a8: https: ...

  2. Excel 技巧篇-公式实现在指定范围内生成指定小数位的随机数

    Excel 生成随机数的公式有两种: 第一个是,生成 0 到 1 之间的小数 =RAND() 第二个是,生成指定两个数之间的整数 =RANDBETWEEN(1,100) 如果我们想要在指定范围内生成指 ...

  3. mysql默认值是随机数_mysql生成指定位数的随机数及批量生成随机数的方法

    1. 先介绍几个常用的 mysql 函数 rand()    随机生成 0~1 之间的小数(0<1) ceiling    向上取整 floor    向下取整 2. 生成随机数 -- 生成 3 ...

  4. python 生成指定概率的随机数

    生成指定概率的随机数 需求 解决方法 需求 遇到一些情况需要指定概率的条件下生成随机数,比如要生成姓名字符串,随机生成的话一般是两个字的姓名和3个字的姓名概率是一样的,而实际应该是大部分偏向三个字的, ...

  5. R语言使用rnorm函数基于不同的均值、方差参数生成正太分布的随机数、使用plot函数和density函数可视化正太分布的随机数对应的密度图、自定义设置均值和方差

    R语言使用rnorm函数基于不同的均值.方差参数生成正太分布的随机数.使用plot函数和density函数可视化正太分布的随机数对应的密度图.自定义设置均值和方差(Normal distributio ...

  6. java生成指定范围的随机数(太屌了)

    生成指定范围内的随机数 这个是最常用的技术之一.程序员希望通过随机数的方式来处理众多的业务逻辑,测试过程中也希望通过随机数的方式生成包含大量数字的测试用例.问题往往类似于: 如何随机生成 1~100 ...

  7. 【C++操作手册】C++生成指定范围内随机数rand(随机数种子)

    c++中的rand函数是用来生成随机数的,它的生成范围是0-Random_max,这个一个内部定义的一个常量,如果我们需要每次生成的随机数不同,这时需要加上随机数种子,利用srand()函数,我们可以 ...

  8. mysql生成固定位数随机数_mysql生成指定位数的随机数

    1. 先介绍几个常用的 MySQL 函数 RAND()    随机生成 0~1 之间的小数(0<1) CEILING    向上取整 FLOOR    向下取整 2. 生成随机数 [code]- ...

  9. python生成指定位数随机数_python生成指定长度的随机数密码

    复制代码 代码如下: #!/usr/bin/env python # -*- coding:utf-8 -*- #导入random和string模块 import random, string def ...

最新文章

  1. GIT入门笔记(4)- GIT 安装
  2. linux rm命令参数及用法详解---linux删除文件或目录命令
  3. php实现防止sql注入的通用方法,PHP实现防止sql注入的通用方法
  4. html5网页制作代码_HTML5的网页设计教程
  5. android q升级名单,华为升级 Android Q 机型名单敲定 阵容庞大
  6. 想做出让老板眼前一亮的可视化报告,这几个“心机”千万要有
  7. 【Python】Python实战从入门到精通之七 -- 教你深入理解异常处理
  8. 王健林最好的时代过去了
  9. 【Druid IO】Druid的imply方式安装
  10. [转]VSS中创建分支
  11. html真实雾效果图,HTML5 Canvas图片上云雾弥漫驱散特效
  12. T1155 金明的预算方案 codevs
  13. 华容道6×6图解_华容道(带图解)
  14. go sync.once用法
  15. cad图层置顶的lisp_cad中如何将一个图层置于上层
  16. 小程序标准版交易组件开启
  17. 教你一键开发桌面应用程序
  18. Oracle数据库违反唯一约束条件
  19. c语言编程水果忍者,少儿创意编程scratch初级游戏之一水果忍者
  20. 使用机器学习来预测股票价格

热门文章

  1. 豆豆趣事[2012年12月]
  2. 微博切换账号显示服务器异常请稍后再试,这个微博名,登陆时候提示服务器数据异常...
  3. android如何调取网站后台的图片,基于Bmob后台开发Android的APP项目——从后端获取图片,以及在后端上上传图片...
  4. Windows网络无连接自动重启bat脚本
  5. 7.10 10.1-10.5
  6. 我们父辈关于房子的事情(r11笔记第93天)
  7. 快播公司2.6亿元天价侵权罚款 侵了宅男们的心
  8. escapeHTML实现
  9. Mobox教育私有云盘助力 学校教学资源库平台建设
  10. HIT_Trainning20140501