python+numpy 随机数的生成,正态分布,0-1分布,均匀分布及随机数种子

46 篇文章 2 订阅
15 篇文章 0 订阅
#! usr/bin/env python
# coding: utf-8

# 使用numpy中的随机函数  学习笔记
# 2018年06月04日11:38:43 北京昌平

import numpy.matlib
import numpy as np


# 说明,每块代码运行时,请将其他模块注释:
# 注释方法1:选中要注释的部分,然后同时按住ctrl和/按键
# 注释方法2:采用字符注释,在要注释的代码前后各加上三个引号


# # 参考:https://docs.scipy.org/doc/numpy/reference/generated/numpy.matlib.rand.html#numpy.matlib.rand
# # numpy.matlib.rand() 返回一个numpy的矩阵
# # 值在[0,1)的区域内
# random1 = numpy.matlib.rand(2)
# # 表示生成一个一维具有两个元素的随机数
# random2 = numpy.matlib.rand(2,3)
# # 表示生成一个2*3的矩阵
# print(random1)
# print(type(random1))
# print(random2)
# # 注意到上面这个随机数的生成,是不可以重复的,也就是说运行时间不同,得到的值不一样


# # numpy.matlib.randn()构造服从均值为0方差为1的正态分布的随机数
# random3 = numpy.random.randn(10000)
# # 产生很多个服从某分布的随机数组,后面可以验证是否服从这个分布
# # 注意到函数的输入可以是多个,每个数则表示一维。
# # 如numpy.random.randn(10,10,10)则表示生成10*10*10的三维随机矩阵。
# print(random3)
# mean = np.mean(random3)
# # 这是numpy中计算均值的函数,直接调用.
# print(mean)
# variance = np.std(random3) ** 2
# # 这是numpy中计算标准差的函数,直接调用,平方后就得到了方差
# print(variance)
# # 可以从打印的结果中看出这是服从均值为0,方差为1的正太分布的
# # 注意,如果输出的数量太少,可能结果偏差比较大。
#
# # 通过numpy.random.randn函数如何生成服从指定均值和方差的矩阵呢?
# # 同理,我们上面也会问如何生成指定范围的随机数呢?
# # 实际上,我们都可以利用单位函数来构造我们想要的随机数
# # sigma * np.matlib.randn(...) + mu
# # 上面就是生成了指定方差为sigma平方,均值为mu的随机数
# random4 = 2.5 * np.matlib.randn((1000, 4000)) + 3
# mean4 = np.mean(random4)
# variance4 = np.std(random4) ** 2
# print(random4)
# print(mean4)
# print(variance4)
# # 从打印结果可以看到均值为2.999.方差为6.250,和理论值很接近



# # numpy.random.rand产生均匀分布的随机数
# random5 = np.random.rand(3,5)
# print(random5)


# 2018年06月04日20:56:44 于北京昌平
# 介绍到这里,可以看出随机数的构造是可以服从某些分布的
# 可以利用一些基本分布函数来构造更加复杂的分布
# 除了正太分布,0-1分布,均匀分布,还有其他分布,如果有需要,可以自行查找官网


# 有时候,我们可能需要随机数可以重现,这时需要用到随机数种子
# 种子唯一,则随机数也会唯一
np.random.seed(20)
random6 = np.random.rand(3,3)
print(random6)

# 注意,如果我们后面还用到随机数,一定要重新设定随机数的种子,否则就不是随机数了

# 至于随机数种子,以及计算机如何产生随机数的,有兴趣的可以进一步了解。

  • 18
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值