python基础2:随机数生成—random模块、numpy中的random函数

20200209

前言:继续做adventure项目中,最近常用python和powerbi。转行时学习项目态度是“我只需要把项目过一遍”,心急,导致基础没掌握。转行时觉得sql很简单,但在实际工作中踩很多坑,为了弥补自己sql基础,在2019年也写过很多篇该类文章,当然练习练习最重要,自己掌握不牢固的可以总结下来。

在Python中可以用于随机数生成的有两种主要途径,一是random模块,另一个是numpy库中random函数。

在我们日常使用中,如果是为了得到随机的单个数,多考虑random模块;如果是为了得到随机小数或者整数的矩阵,就多考虑numpy中的random函数,当然numpy也可以的到随机的单个数

目录:

一、random模块
二、numpy库中random函数

一、random模块

random模块中将近有7个函数都是可以用来生成随机数的:

  • 1、random.random():随机生成一个 [0,1) 的浮点数
  • 2、random.uniform(a,b):随机生成一个 [a,b) 的浮点数
  • 3、random.randint(a,b):随机生成一个 [a,b] 的整数
  • 4、random.choice(sequence):从列表,元组,字符串(可用于for循环的数据类型)中随机选择一个元素
  • 5、random.randrange(a,b,step):在生成的<以a为始,每step递增,以b为终>这样的一个整数序列中随机选择一个数
  • 6、random.shuffle(a):打乱一个列表的元素顺序
  • 7、random.sample(self, population, k):从序列population中随机取出k个数;population的类型可以是列表、元组、集合、字符串

1、random模块——random.random()

作用:随机生成一个 [0,1) 的浮点数

import random
random.random()
type(random.random())  #查看数据类型    
random.random()

2、random模块——random.uniform(a,b)

作用:随机生成一个 [a,b) 的浮点数

random.uniform(7,20)

type(random.uniform(7,20)) #查看数据类型
random.uniform(a,b)

3、random模块——random.randint(a,b)

作用:随机生成一个 [a,b] 的整数

random.randint(99,100)
type(random.randint(99,100))
random.randint(a,b)

4、random模块—— random.choice(sequence)

作用:从列表,元组,字符串、集合(可用于for循环的数据类型)中随机选择一个元素

random.choice('Bob')
random.choice([3,4,11,30,100])
random.choice(('Michael', 'Bob', 'Tracy'))
random.choice(sequence)

5、random模块—— random.randrange(a,b,step)

作用:在生成的<以a为始,每step递增,以b为终>这样的一个整数序列中随机选择一个数

random.randrange(2,12,3)
random.randrange(a,b,step)

random.randrange(a,b,step)

6、random模块——random.shuffle(a)

作用:打乱一个列表的元素顺序

a = ['Michael', 'Bob', 'Tracy']
random.shuffle(a)
print(a)
random.shuffle(a)

7、random模块——random.sample(self, population, k)

从序列population中随机取出k个数;population的类型可以是列表、元组、集合、字符串;

a = ['Michael', 'Bob', 'Tracy','xiaoming','age','school']
print(random.sample(a, 2))
random.sample(self, population, k)

二、numpy中的random函数

在Numpy库中,常用使用np.random.rand()、np.random.randn()和np.random.randint()随机函数。

  • 1、np.random.randn()函数:返回一个或一组服从标准正态分布的随机样本值
  • 2、np.random.rand()函数
  • 3、numpy.random.randint()
  • 4、np.random.random([size])
  • 5、np.random.choice(a,[ size, replace, p])

1、numpy中的random函数——np.random.randn()函数

作用:返回一个或一组服从标准正态分布的随机样本值

print('=============当函数括号内没有参数时,则返回一个浮点数==================')
print(np.random.randn())
print(np.random.randn())
print(np.random.randn())

print('=============当函数括号内有1个参数时,则返回秩为1的数组,不能表示向量和矩阵==================')
print(np.random.randn(4))
print(np.random.randn(2))
print(np.random.randn(3))

print('==========当函数括号内有两个及以上参数时,则返回对应维度的数组=====================')
print(np.random.randn(4,3))
np.random.randn()

备注:标准正态分布是以0为均数、以1为标准差的正态分布,记为N(0,1)。对应的正态分布曲线如下所示,即


image.png

2、numpy中的random函数——np.random.rand()函数

作用:使用方法与np.random.randn()函数相同 ,通过本函数可以返回一个或一组服从“0~1”均匀分布的随机样本值。随机样本取值范围是[0,1),不包括1

print('=============当函数括号内没有参数时,则返回一个[0,1)浮点数==================')
print(np.random.rand())
print(np.random.rand())

print('=============当函数括号内有1个参数时,则返回秩为1的数组,不能表示向量和矩阵==================')
print(np.random.randn(5))
print(np.random.randn(3))

print('==========当函数括号内有两个及以上参数时,则返回对应维度的数组=====================')
print(np.random.randn(3,3))
np.random.rand()

3、numpy中的random函数——numpy.random.randint()

numpy.random.randint(low, high=None, size=None, dtype='l')
输入:
low—–为最小值
high—-为最大值
size—–为数组维度大小
dtype—为数据类型,默认的数据类型是np.int。

作用: 返回随机整数或整型数组,范围区间为[low,high),包含low,不包含high; high没有填写时,默认生成随机数的范围是[0,low

print("=============当没有sizec参数时,则返回一个整数==================")
print(np.random.randint(1,5))
print(np.random.randint(5))
a = np.random.randint(5)
print(type(a))

print("=============当有sizec参数为两个及以上参数时,则返回对应维度的数组==================")
print(np.random.randint(3,size =[3,6])) #返回[0,3)之间的,3行6列数组
print('--------')
print(np.random.randint(1,10,size =[2,7])) #返回[1,10)之间的,2行7列数组

print("=============当有sizec为1个参数时,则返回秩为1的数组==================")
print(np.random.randint(10,size =[8])) #返回[0,10)之间的,秩为1的数组

numpy.random.randint()

4、numpy中的random函数——np.random.random([size])

np.random.random([size])
作用:生成[0,1)之间的浮点数,与np.random.rand()功能类似

print('=============当函数括号内没有参数时,则返回一个[0,1)浮点数==================')
print(np.random.random())
print(np.random.random())

print('=============当函数括号内有1个参数时,则返回秩为1的数组,不能表示向量和矩阵==================')
print(np.random.random(5))
print(np.random.random(3))

print('==========当函数括号内有两个及以上参数时,则返回对应维度的数组=====================')
print(np.random.random(size = [2,4]))
np.random.random([size])

5、numpy中的random函数——np.random.choice(a,[ size, replace, p])

np.random.choice(a,[ size, replace, p])

  • 从给定的一维数组中生成随机数
  • 参数: a为一维数组类似数据或整数;size为数组维度;p为数组中的数据出现的概率;repalce参数为是否可以重复,当设置为FALSE时,不能出现重复的数据
  • a为整数时,对应的一维数组为np.arange(a)
print(np.random.choice(5,3)) #从数组np.arange(5)中选择,返回秩为1的数组
print(np.arange(5))

print('===========给数组中每个数据出现的概率赋值==========')
print(np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0]))
print(np.random.choice(5, 5, p=[0, 0, 0.4, 0.6, 0]))

print('==========从数组np.arange(5)中选择,生成一个3行3列的数组========')
print(np.random.choice(5,size=(2,6))) #从数组np.arange(5)中选择,生成一个3行3列的数组

print('==========也可以传入非数字、字符串的数组===========')
demo_list = ['lenovo', 'sansumg','moto','xiaomi', 'iphone']
print(np.random.choice(demo_list,size=(3,3)))

np.random.random([size])

关于numpy中的random函数先总结到这,大家可以参考文章numpy之random库简单的随机数据生成,这篇文章用到的函数更多,里面介绍了6种,这里总结了5种我们常用的方法。

参考文档1:【python】numpy之random库简单的随机数据生成.rand()、.randint()、.randn()、.random()等(一)
参考文档2:Python中随机数的生成
参考文档3:numpy.random模块常用函数

终于写完了,我以为它很简单的………………预计1小时,结果写了2.5小时

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容