python如何生成正态分布随机数

您所在的位置:网站首页 python创建生成器 python如何生成正态分布随机数

python如何生成正态分布随机数

2023-09-10 09:02| 来源: 网络整理| 查看: 265

f6088bd1dca6a8e1fe8db444d5c6ce94.png

主要涉及python的random()内置模块和numpy的np.random()函数,在平时学习过程中很容易弄混淆,为了便于记忆,我便将常用创建随机数组的方法进行归纳,分享的内容主要是我自己在学习python过程中的一些笔记,供大家参考。

导入模块

import numpy as np import random

第一:random() 创建随机数

random.random() #随机生成一个[0,1)之间的浮点数 output: 0.8796515137689584 random.uniform(a=1,b=10) #随机生成一个[1,10)之间的浮点数;a,b的值可以自定义。 output: 9.466997936629005 random.randint(a=2,b=20) #随机生成一个[2,20]之间的整数 output: 8 random.randrange(2,20,step=2) #随机生成一个以a为起始,b为终止,步长为2的一个整数序列中随机选择一个数 output: 10 a = [2,3,52,3,5,6,7,9] random.choice(a) #从一段指定序列中随机选择一个元素 output: 52 random.sample(a,k=2) #从一段序列中随机获取指定长度(k)的一个片段,也就是在一段序列中,随机选择一定长度的片段。 output: [3,7] random.shuffle(a) #将一段序列重新随机打乱,也就是重新洗牌,作用与对象本身。 output: [52,3,1,3,5,9,7,6]

第二:numpy中random() 创建均匀分布和正态分布数

#创建均匀分布数 np.random.rand(2,6) #生成2*6维的随机均匀分布的浮点型的数组,浮点型。 output: array([[0.94029271, 0.20548985, 0.97117843, 0.67192293, 0.19122344, 0.23440226], [0.85908951, 0.40018435, 0.97355899, 0.89867726, 0.21629239, 0.0683459 ]]) np.random.uniform(low=2,high=8,size=(3,6)) #从以low为下限,high为上限的随机均匀分布数中随机取样,生成size维度的均匀分布数组,浮点型。 #包括下限,不包括上限,不指定low和high时,默认值为low =0,high =1;如果high = None,则取[0,low)区间。 output: array([[3.64223489, 3.42632238, 4.73676882, 4.67073355, 3.73765554, 5.12705181], [3.11553913, 4.55005578, 7.41691337, 6.12574835, 4.0700791 , 2.8302397 ], [7.29265615, 3.30656602, 3.60942736, 6.31170398, 5.70847326, 2.86159162]]) np.random.randint(low=2,high=8,size=(3,6)) #从以low为下限,high为上限的随机均匀分布数中随机取样,生成size维度的均匀分布数组,整型。 #包括下限,不包括上限,不指定low和high时,如果high = None,则取[0,low)区间。 output: array([[4, 2, 4, 3, 5, 6], [5, 3, 4, 6, 7, 6], [7, 7, 3, 6, 6, 6]]) print("*"*50) ******************************************************************************************* #创建正态分布数: np.random.randn(2,6) #随机生成一个a*b维的标准正态分布数组,浮点型。 output: array([[-0.4959866 , 1.08237116, 0.52670026, -1.69232156, 0.00403935, -0.32546638], [ 0.35287957, 0.76335025, -0.13932746, -1.53654883, -0.38248883, -0.35163811]]) np.random.normal(loc =0.0 , scale= 1.0,size = (5,4)) #生成随机正态分布数。 # loc:float类型,表示此正态分布的均值(对应整个分布中心) # scale:float类型,表示此正态分布的标准差(对应于分布的密度,scale越大越矮胖,数据越分散;scale越小越瘦高,数据越集中) # size:输出的shape,size=(k,m,n) 表示输出k维,m行,n列的数,默认为None,只输出一个值,size=100,表示输出100个值 output: array([[-0.2299858 , 2.38889343, -1.01535668, 0.30636556], [-0.12356073, -1.15882741, -2.3020169 , 1.14696109], [ 2.78000626, 2.30578599, -0.20354327, 0.35173562], [ 0.24328894, 0.05669307, 0.74640343, 0.38820975], [-1.38249917, 1.35298311, 0.31128245, 0.05224185]]) np.random.standard_normal(size = (5,6)) #返回指定形状的标准正态分布数组 output: array([[-1.40083025, -0.97611084, 0.98945864, 0.0376667 , -0.01613342, 0.68298786], [-0.8987326 , 0.91901295, -1.25115132, 1.22083966, -1.30825891, 2.2794486 ], [ 1.3310628 , 1.18260918, -0.01140547, 0.58069417, -0.69131227, -0.25729141], [-0.04220021, 0.95954556, -2.07073858, 1.3124707 , 0.06471694, 1.49311661], [ 1.1192971 , 0.46825176, 0.28649991, 0.41513604, 0.3947307 , 0.92077591]])

第三:创建指定序列列表

#Python中range()函数: range(start,stop,step) #start: 默认值为0,包括start,可省略 #stop: 终止值,不包括stop,不可省略 #step: 步长,默认值为1,不能是浮点型,可省略 range(10) #等价于range(0,10,1) 可以省略起始值和步长。 output: range(0, 10) range(2,10,2) #以2为起始,10为终止,步长为2的序列,[2,10) #在python3中返回的是一个可迭代对象,通过list(range(2,10,2)) 可以列表形式输出,而在python2中则之间以列表形式输出 output: range(2, 10, 2) list(range(2,10,2)) #python3中如果需要返回一段序列,通过list()函数输出 output: [2, 4, 6, 8] print("^"*50) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ numpy中np.arange()函数 np.arange(start,stop,step)函数:创建一个数组ndarray #start: 默认值为0,包括start,可省略 #stop: 终止值,不包括stop,不可省略 #step: 步长,默认值为1,可以是浮点型,可省略 np.arange(10,20,2) #以10为起始,20为终止,步长为2的numpy数组[10,20) output: array([10, 12, 14, 16, 18]) np.arange(1,5,0.5) #可以指定步长为浮点型,生成浮点型数组。 output: array([1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])

内容持续更新,喜欢就帮忙给个收藏和关注呗!谢谢。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3