Python随机数生成(一):random模块

您所在的位置:网站首页 python随机函数生成句子 Python随机数生成(一):random模块

Python随机数生成(一):random模块

2024-07-06 05:26| 来源: 网络整理| 查看: 265

Python随机数生成(一):random模块 random模块生成随机数(1)生成随机整数① random.randint(a, b)② random.randrange(start, stop[, step]) (2)生成随机浮点数① random.random()② random.uniform(a, b) (3)从指定序列中生成随机数① random.choice(seq)② random.choices(seq, weights=None, *, cum_weights=None, k=1)③ random.sample(seq, k)④ random.shuffle(seq) (4)生成特定分布的随机数1、均匀分布① random.random()② random.uniform(a, b) 2、三角分布① random.triangular(low, high, mode) 3. 指数分布① random.expovariate(lambd) 4. 正态分布① random.normalvariate(mu, sigma) 5. 对数正态分布① random.lognormvariate(mu, sigma) 6. 高斯分布① random.gauss(mu, sigma) 7. Beta分布① random.betavariate(alpha, beta) 8. Gamma分布① random.gammavariate(alpha, beta) 9. 帕累托分布① random.paretovariate(alpha) 10. 威布尔分布① random.weibullvariate(alpha, beta) 11. 冯·米塞斯分布① random.vonmisesvariate(mu, kappa) 参考文献

在Python中随机数生成主要有两种途径,一是利用random模块生成,二是利用numpy库中random函数生成。在我们日常使用中,如果是为了得到随机的单个数,多考虑random模块;如果是为了得到随机小数或者整数的矩阵,就多考虑numpy中的random函数。 除此之外,scipy.stats模块也可以生成随机数和特定分布的随机数。

其他方式生成随机数见笔者的其他文章: Python随机数生成(二):numpy库中random函数

random模块生成随机数 (1)生成随机整数 ① random.randint(a, b)

功能: 返回随机整数 N 满足 a ≤ N ≤ b。相当于 randrange(a, b+1)。 用法:

import random number = random.randint(3,7) # 输出:6 ② random.randrange(start, stop[, step])

功能: 在生成的这样的一个整数序列中随机选择一个数。[, step]代表该参数是可选参数。 用法:

import random number = random.randrange(2,8,2) # 输出:6 (2)生成随机浮点数 ① random.random()

功能: 生成一个[0,1) 间的随机浮点数。 用法:

import random number = random.random() # 输出:0.7365131579088379 ② random.uniform(a, b)

功能: 返回一个a,b间的随机浮点数N,当 a ≤ b 则N的范围为[a,b],当 b < a 则N的范围为[b,a]。 用法:

import random number = random.uniform(1,4) # 输出:1.8288291918995063 (3)从指定序列中生成随机数 ① random.choice(seq)

功能: 从序列seq中随机选择一个元素。 用法:

import random a = random.choice(range(1,10)) # 输出:4 b = random.choice('abcdefg') # 输出:e ② random.choices(seq, weights=None, *, cum_weights=None, k=1)

功能: 从序列seq中以指定的权重随机选择k个元素,返回一个新的列表。

如果指定了 weight 序列,则根据相对权重进行选择。如果指定了 cum_weights 序列,则根据累积权重进行选择。如果既未指定 weight 也未指定 cum_weights ,则以相等的概率进行选择。如果提供了权重序列,则它必须与 seq 序列的长度相同。

用法:

import random a = random.choices(['red', 'black', 'green'], [18, 18, 2], k=6) # 输出:['red', 'black', 'red', 'red', 'black', 'red'] ③ random.sample(seq, k)

功能: 从序列seq中随机选择k个元素,返回一个新的列表。 用法:

import random a = ['小红','小兰','小王','小张','小梁'] b = random.sample(a,2) # 输出:['小梁', '小王'] ④ random.shuffle(seq)

功能: 将序列seq中的元素随机排序。 用法:

import random a = ['小红','小兰','小王','小张','小梁'] random.shuffle(a) # 打乱这个操作不需要重新定义对象,它作用的是对象本身 # 输出:['小兰', '小王', '小红', '小梁', '小张'] (4)生成特定分布的随机数 1、均匀分布

均匀分布,就是在事件空间中,所有事件的概率都是相等的连续分布,其概率密度为 在这里插入图片描述 其均值为(a+b)/2 ,方差为(b−a)^2/12

① random.random()

功能: 生成一个[0,1) 间的随机浮点数。 用法见前文。

② random.uniform(a, b)

功能: 返回一个a,b间的随机浮点数N,当 a ≤ b 则N的范围为[a,b],当 b < a 则N的范围为[b,a]。 用法见前文。

2、三角分布

对于下限为a,上限为b,众数为c的三角分布,其概率密度函数为 在这里插入图片描述

① random.triangular(low, high, mode)

功能: 返回一个三角分布的随机浮点数 N ,使得 low ≤ N ≤ high ,mode指明众数出现的位置 。 low 和 high 默认为0和1。 mode 参数默认为 low 和 high 之间的中点,给出一个对称的三角分布。 用法:

import random import matplotlib.pyplot as plt import seaborn as sns data = [random.triangular(2,3,2.5) for i in range(20000)] plt.hist(data, bins=100, color="#FF0000", alpha=.7) # 直方图 sns.kdeplot(data, shade=True,color="#FF0000")#密度图

直方图: 在这里插入图片描述 密度图: 在这里插入图片描述

3. 指数分布

指数分布为连续型分布,概率密度函数为:

分布函数为:

在这里插入图片描述 期望: , 方差:在这里插入图片描述

① random.expovariate(lambd)

功能: 指数分布。 lambd 是 1.0 除以所需的平均值,它应该是非零的。 (该参数本应命名为 “lambda” ,但这是 Python 中的保留字。)如果 lambd 为正,则返回值的范围为 0 到正无穷大;如果 lambd 为负,则返回值从负无穷大到 0。 用法:

import random import matplotlib.pyplot as plt import seaborn as sns data = [random.expovariate(2) for i in range(50000)] plt.hist(data, bins=100, color="#FF0000", alpha=.7) # 直方图 sns.kdeplot(data, shade=True,color="#FF0000") # 密度图

直方图: 在这里插入图片描述

密度图: 在这里插入图片描述

4. 正态分布 ① random.normalvariate(mu, sigma)

功能: 正态分布。 mu 是平均值,sigma 是标准差。 用法:

import random import matplotlib.pyplot as plt import seaborn as sns data = [random.normalvariate(2,4) for i in range(20000)] plt.hist(data, bins=100, color="#FF0000", alpha=.7) # 直方图 sns.kdeplot(data, shade=True,color="#FF0000") # 密度图

直方图: 在这里插入图片描述 密度图: 在这里插入图片描述

5. 对数正态分布 ① random.lognormvariate(mu, sigma)

功能: 对数正态分布。 若采用这个分布的自然对数,将得到一个平均值为 mu 和标准差为 sigma的正态分布 。 mu 可以是任何值,sigma 必须大于零。 用法:

import random import matplotlib.pyplot as plt import seaborn as sns data = [random.lognormvariate(4,2) for i in range(50000)] plt.hist(data, bins=100, color="#FF0000", alpha=.7) # 直方图 sns.kdeplot(data, shade=True,color="#FF0000") # 密度图

直方图: 在这里插入图片描述 密度图: 在这里插入图片描述

6. 高斯分布 ① random.gauss(mu, sigma)

功能: 高斯分布。 mu 是平均值,sigma 是标准差。 这比random.normalvariate(mu, sigma)函数略快。 用法:

import random import matplotlib.pyplot as plt import seaborn as sns data = [random.gauss(2,2) for i in range(50000)] plt.hist(data, bins=100, color="#FF0000", alpha=.7) # 直方图 sns.kdeplot(data, shade=True,color="#FF0000") # 密度图

直方图: 在这里插入图片描述 密度图: 在这里插入图片描述

7. Beta分布 ① random.betavariate(alpha, beta)

功能: Beta 分布。 参数的条件是 alpha > 0 和 beta > 0。 返回值的范围介于 0 和 1 之间。 用法:

import random import matplotlib.pyplot as plt import seaborn as sns data = [random.betavariate(1,2) for i in range(20000)] plt.hist(data, bins=100, color="#FF0000", alpha=.7) # 直方图 sns.kdeplot(data, shade=True,color="#FF0000") # 密度图

直方图: 在这里插入图片描述 密度图: 在这里插入图片描述

8. Gamma分布 ① random.gammavariate(alpha, beta)

功能: Gamma 分布。( 不是 gamma 函数!)参数的条件是 alpha > 0 和 beta > 0。 用法:

import random import matplotlib.pyplot as plt import seaborn as sns data = [random.gammavariate(2,2) for i in range(50000)] plt.hist(data, bins=100, color="#FF0000", alpha=.7) # 直方图 sns.kdeplot(data, shade=True,color="#FF0000") # 密度图

直方图: 在这里插入图片描述 密度图: 在这里插入图片描述

9. 帕累托分布

帕累托在1906年提出了有关意大利社会财富分配的分配规律,即20%的人口掌握了80%的财富,这个规律后来被发现十分普遍,以至于约瑟夫·朱兰后来将其称为帕累托法则,也被成为八二法则。 帕累托分布正是对这一规则的描述,其概率分布函数为 在这里插入图片描述

① random.paretovariate(alpha)

功能: 帕累托分布。 alpha 是形状参数。 用法:

import random import matplotlib.pyplot as plt import seaborn as sns data = [random.paretovariate(4) for i in range(50000)] plt.hist(data, bins=100, color="#FF0000", alpha=.7) # 直方图 sns.kdeplot(data, shade=True,color="#FF0000") # 密度图

直方图: 在这里插入图片描述 密度图: 在这里插入图片描述

10. 威布尔分布 ① random.weibullvariate(alpha, beta)

功能: 威布尔分布。 alpha 是比例参数,beta 是形状参数。 用法:

import random import matplotlib.pyplot as plt import seaborn as sns data = [random.weibullvariate(1,2) for i in range(20000)] plt.hist(data, bins=100, color="#FF0000", alpha=.7) # 直方图 sns.kdeplot(data, shade=True,color="#FF0000") # 密度图

直方图: 在这里插入图片描述

密度图: 在这里插入图片描述

11. 冯·米塞斯分布 ① random.vonmisesvariate(mu, kappa)

功能: 冯·米塞斯分布。 mu 是平均角度,以弧度表示,介于0和 2pi 之间,kappa 是浓度参数,必须大于或等于零。 如果 kappa 等于零,则该分布在 0 到 2pi 的范围内减小到均匀的随机角度。 用法:

import random import matplotlib.pyplot as plt import seaborn as sns data = [random.vonmisesvariate(2,2) for i in range(20000)] plt.hist(data, bins=100, color="#FF0000", alpha=.7) # 直方图 sns.kdeplot(data, shade=True,color="#FF0000") # 密度图

直方图: 在这里插入图片描述 密度图: 在这里插入图片描述

参考文献

1、Python中随机数的生成 2、Random模块的官方文档



【本文地址】


今日新闻


推荐新闻


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