文章目录

  • 一、二项分布:numpy.random.binomial(n, p, size)
  • 二、超几何分布:numpy.random.hypergeometric(ngood, nbad, nsample, size)
  • 三、正态分布:numpy.random.normal(size)

一、二项分布:numpy.random.binomial(n, p, size)

1、返回值: 返回包含size个的随机数数组,其中每个随机数来自n次尝试中的成功次数,p为每次尝试成功的概率

2、经典案例——猜硬币游戏
初始筹码1000,每轮猜9次,猜对5次或5次以上为赢,筹码加一,否则为输,筹码减一。
用程序模拟10000轮,记录筹码数的变化,即为binomial(9, 0.5, 10000)

3、测试代码

import numpy as np
import matplotlib.pylab as mpoutcomes = np.random.binomial(9, 0.5, 10000)  # 记录成功曲线的数据
chips = [1000]  #记录筹码的变化
for outcome in outcomes:if outcome >= 5 :chips.append(chips[-1]+1)  # 则将最后一个筹码+1else:chips.append(chips[-1] - 1)
chips = np.array(chips)  # 变成数组# 基本图形参数
mp.figure('Binomial', facecolor='lightgray')
mp.title('Binomial', fontsize=20)
mp.xlabel("Round", fontsize=14)
mp.ylabel('Chip', fontsize=14)
mp.tick_params(labelsize=10)
mp.grid(linestyle=':')

二、超几何分布:numpy.random.hypergeometric(ngood, nbad, nsample, size)

1、返回值: 返回包含size个随机数的数组,其中每个随机数来自随机抽取nsample个样本中好样本的个数,ngood个好样本,nbad个坏样本。

2、经典案例——摸球球游戏: 将25个好球和1个坏球放在一起,每一轮摸出3个球,若全为好球则加1分,若有坏球则减6分。模拟程序模拟100轮,记录分值的变化。hypergeometric(25, 1, 3, 100)

3、测试代码

import numpy as np
import matplotlib.pylab as mpoutcomes = np.random.hypergeometric(25, 1, 3, 100)  # 记录成功曲线的数据
scores = [0]  #记录得分的变化
for outcome in outcomes:if outcome == 3 :scores.append(scores[-1]+1)  # 则将最后一个筹码+1else:scores.append(scores[-1] - 6)
scores = np.array(scores)  # 变成数组# 基本图形参数
mp.figure('Hypergeometric', facecolor='lightgray')
mp.title('Hypergeometric', fontsize=20)
mp.xlabel("Round", fontsize=14)
mp.ylabel('Score', fontsize=14)
mp.tick_params(labelsize=10)
mp.grid(linestyle=':')# 绘制图像
if scores[-1] < scores[0]:  # 小于最开始的筹码数,就是输了color = 'orangered'
elif scores[-1] > scores[0]:  # 赢了color = 'limegreen'
else:color = 'dodgerblue'
mp.plot(scores, c=color, label='Chip')mp.legend()
mp.show()

三、正态分布:numpy.random.normal(size)

1、返回值: 输出包含size个随机数的数组,其中每个随机数服从标准正态分布规律,即平均值为0,标准差为1的正态分布。

2、经典案例

import numpy as np
import matplotlib.pylab as mpsamples = np.random.normal(size=10000)  # 记录成功曲线的数据
# 验证平均值和标准差(接近0和接近1)
print(samples.mean(), samples.std())# 基本图形参数
mp.figure('Standard Normal', facecolor='lightgray')
mp.title('Standard Normal', fontsize=20)
mp.xlabel("Sample", fontsize=14)
mp.ylabel('Occurrence', fontsize=14)
mp.tick_params(labelsize=10)
mp.grid(axis='y', linestyle=':')  # 只画水平网格线# 绘制图像(直方图),100表示分成100段,normed表示按照比例显示纵坐标
mp.hist(samples, 100,edgecolor='steelblue',facecolor='deepskyblue',label="Standard Normal")mp.legend()
mp.show()

3、测试效果

Python之数据分析(random模块的正确用法)相关推荐

  1. python中的random模块_Python内置random模块生成随机数的方法

    本文我们详细地介绍下两个模块关于生成随机序列的其他使用方法. 随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的ran ...

  2. python random模块中的指令_10分钟让你掌握python编程中random模块功能使用,非常详细...

    原标题:10分钟让你掌握python编程中random模块功能使用,非常详细 python作为一门高级编程语言,它的定位是优雅.明确和简单.阅读Python编写的代码感觉像在阅读英语一样,这让使用者可 ...

  3. Python中的random模块

    Python中的random模块用于随机数生成,对几个random模块中的函数进行简单介绍.如下: random.random() 用于生成一个0到1的随机浮点数.如: import random r ...

  4. python中的random模块_Python中的random模块

    Python 中的 random 模块 1. Python 中的 random 模块用于生成随机数.下面介绍一下 random 模块中最常用 的几个函数. 2. 3. random.random 4. ...

  5. python笔记:random模块中的函数

    目录 伪随机数生成器 从序列中获取一个随机值 生成[a,b]随机整数 [a,b]间隔k生成随机整数 [a,b]随机生产浮点数 从序列(集合)中随机获取不同的10个值,结果用一个列表返回 将列表中元素打 ...

  6. random()模块随机函数的用法总结

    random()是Python中生成随机数的函数,是由random模块控制,random()函数不能直接访问,需要导入random 模块,然后再通过相应的静态对象调用该方法才能实现相应的功能 目录 1 ...

  7. python生成随机数—random模块

    random 模块包括返回随机数的函数,可以用于模拟或者任何产生随机输出的程序. random.random()    返回随机生成的一个实数,它在[0,1)范围内 random.randint(a, ...

  8. python中的random模块学习

    我将random模块中的各函数作为代码中的注释说明了: 下面是运行结果 参考文献 http://www.jb51.net/article/50066.htm

  9. 滚雪球学 Python 之内置 random 模块

    橡皮擦,一个逗趣的互联网高级网虫,新的系列,让我们一起 Be More Pythonic. 滚雪球学 Python 第二轮 已完成的文章清单 十二.Python 内置模块之 random 12.1 基 ...

最新文章

  1. JavaScript (二)
  2. 用正则表达式验证php用户注册系统,php用户注册时常用的检验函数实例总结
  3. mongodb更新操作符$inc,$mul
  4. 关于Java交换两个对象的问题
  5. 如何在sql存储过程中打log_SQL语句优化
  6. Android 别踩白块 源码分析
  7. 几张动态图弄懂递归,二叉树,二分查找简短算法
  8. c语言文件名错误的是,C语言程序错误,不能正常读写文件,求解啊
  9. 估值过能预市下行风险
  10. COM ---- Inside COM Note
  11. 为什么天蝎座出互联网大佬,我来告诉你原因!
  12. WinSCP 连接 AWS 服务器
  13. Uncaught SyntaxError: Unexpected identifier问题解决
  14. [开源工具]2022/2023 分享好用的免费的云短信/临时短信[Temp Message]
  15. LeetCode #743 Network Delay Time
  16. 用户为什么要使用天翼LIVE?
  17. 2021修水高考成绩查询,修水中考成绩查询2021
  18. 什么是 MVVM 模式?
  19. oracle两个date相减_oracle 两个时间相减[转]
  20. 最大权闭合子图(最小割模型)

热门文章

  1. python面向对象的特征_03 Python 关键点讲解:面向对象的机制
  2. java char i=2+#039;2#039;;_图说String(三)String中#039;+#039;和StringBuilder的区别
  3. 简述mysql的事务_请简述为什么要使用数据库的事务
  4. 服务器中修改项目端口,c#-在Visual Studio 2013中更改项目端口号
  5. mysql update 批量更新_mysql 批量更新的两种方法
  6. linux扩容后显示管理,linux之lvm管理及扩容
  7. 错误 1 未能找到类型或命名空间名称mysql_错误1未能找到类型或命名空间名称“DataPager”(是否缺少 using 指令或程序集引用?)...
  8. android porting usb audio,android - 在android中启动时找不到audio-hal-2-0 - 堆栈内存溢出...
  9. oracle 11g RAC无法采用deinstall自动卸载grid,手动卸载,超级棒!
  10. 查看oracle会话空闲时间,使用Oracle PROFILE控制会话空闲时间