python中random随机函数详解

目录
  • 一、random基础
  • 二、实数分布
    • 2.1 对称分布
    • 2.2 指数分布
    • 2.3 Beta 分布
    • 2.4 Gamma 分布
    • 2.5 高斯分布
    • 2.6 对数正态分布
    • 2.7 正态分布
    • 2.8 冯·米塞斯分布
    • 2.9 帕累托分布
    • 2.10 威布尔分布
  • 总结

加载相关库

import random
import seaborn as sns
import matplotlib.pyplot as plt

# 解决中文不显示的问题
from pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei']
# 解决正负号不显示问题
plt.rcParams['axes.unicode_minus']=False

一、random基础

random.random()                                  # 返回随机生成的一个实数,它在[0,1)范围内。
random.randint(1,10)                             # 产生 1 到 10 的一个整数型随机数
random.randrange(1,100,2)                        # 生成从1到100的间隔为2的随机整数
random.uniform(1.1,5.4)                          # 产生  1.1 到 5.4 之间的随机浮点数,区间可以不是整数
random.choice('tomorrow')                        # 从序列中随机选取一个元素
random.sample('zyxwvutsrqponmlkjihgfedcba',5)    # 多个字符中生成指定数量的随机字符

# 打乱排序
items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
random.shuffle(items)
print(items)

items:[3, 8, 4, 1, 7, 0, 6, 2, 9, 5]

二、实数分布

2.1 对称分布

random.triangular(low, high, mode)

返回一个随机浮点数 N ,使得 low <= N <= high 并在这些边界之间使用指定的 mode 。 low 和 high 边界默认为零和一。 mode 参数默认为边界之间的中点,给出对称分布。

n = 10000
x = [random.triangular(1, 10, 2) for i in range(n)]
sns.distplot(x)  # 默认

2.2 指数分布

random.expovariate(lambd)

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

n = 10000
x = [random.expovariate(1) for i in range(n)]
sns.distplot(x)  # 默认

2.3 Beta 分布

random.betavariate(alpha, beta)

参数的条件是 alpha > 0 和 beta > 0。 返回值的范围介于 0 和 1 之间。

n = 10000
x = [random.betavariate(1, 1) for i in range(n)]
sns.distplot(x)  # 默认

2.4 Gamma 分布

random.gammavariate(alpha, beta)

( 不是 gamma 函数! ) 参数的条件是 alpha > 0 和 beta > 0。

n = 10000
x = [random.gammavariate(10, 10) for i in range(n)]
sns.distplot(x)  # 默认

2.5 高斯分布

random.gauss(mu, sigma)

mu 是平均值,sigma 是标准差。 这比下面定义的 normalvariate() 函数略快。

n = 10000
x = [random.gauss(10, 1) for i in range(n)]
sns.distplot(x)  # 默认

2.6 对数正态分布

random.lognormvariate(mu, sigma)

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

n = 10000
x = [random.lognormvariate(-100, 1) for i in range(n)]
sns.distplot(x)  # 默认

2.7 正态分布

random.normalvariate(mu, sigma)

mu 是平均值,sigma 是标准差。

n = 10000
x = [random.normalvariate(100, 10) for i in range(n)]
sns.distplot(x)  # 默认

2.8 冯·米塞斯分布

random.vonmisesvariate(mu, kappa)

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

n = 10000
x = [random.vonmisesvariate(4, 0) for i in range(n)]
sns.distplot(x)  # 默认

2.9 帕累托分布

random.paretovariate(alpha)

alpha 是形状参数。

n = 10000
x = [random.paretovariate(100) for i in range(n)]
sns.distplot(x)  # 默认

2.10 威布尔分布

random.weibullvariate(alpha, beta)

alpha 是比例参数,beta 是形状参数。

n = 10000
x = [random.weibullvariate(100,10) for i in range(n)]
sns.distplot(x)  # 默认

总结

到此这篇关于python中random随机函数详解的文章就介绍到这了,更多相关python random随机数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python中random模块详解

    Python中的random模块用于生成随机数,它提供了很多函数.常用函数总结如下: 1. random.random() 用于生成一个0到1的随机浮点数: 0 <= n < 1.0 2. random.seed(n) 用于设定种子值,其中的n可以是任意数字.random.random() 生成随机数时,每一次生成的数都是随机的.但是,使用 random.seed(n) 设定好种子之后,在先调用seed(n)时,使用 random() 生成的随机数将会是同一个. 3. random.unifo

  • Python random模块的运用详解

    目录 1.随机取小数: 2.整数的随机选取: 3.随机列表取数,元素打乱: 总结 1.随机取小数: import random print(random.runiform(a,b)) #a-b之间小数的选取 print(random.random()) #0-1之间小数随机选取 输出:0.03815542754382306 print(random.uniform(2,4)) 输出:3.560120761832978 2.整数的随机选取: import random print(random.r

  • 一篇文章带你了解python标准库--random模块

    目录 1. random库基本介绍 2. random库概述 2.1 基本随机函数 2.2 扩展随机函数 3. 随机数函数的使用 4. 实例 总结 1. random库基本介绍 Random库时使用随机数的python标准库 伪随机数:采用梅森旋转算法生成的(伪)随机序列中的元素 Random库主要用于生成随机数 使用random库:import random 2. random库概述 Random库包含两类函数,常用共8个 基本随机函数:seed() random() 扩展随机函数:randi

  • Python 中random 库的详细使用

    Random库主要包含返回随机数的函数,主要用于普通的随机数生成的程序,如果对随机性有特殊要求,比如加密等,可以用函数os.urandom()或者random模块内部的SystemRandom类,这些可以让数据接近真正的随机性. 前言 为啥突然写这个?因为用到就写呗,感觉对生成数据很有用,之前都是百度别人的,今天来对着官方文档写,超级标准! 这边只讲常用的,看了下文档还有什么数学方法,太高级好像用不上 返回整数 random.randrange语法格式 两种写法 random.randrange

  • Python中的随机函数random详解

    目录 常规用法 使用案例: 常规用法 用法 作用 random() 返回0<=n<1之间的随机浮点数n random.uniform(a, b) 用于生成一个指定范围内的随机符点数 random.randint(a, b) 用于生成一个指定范围内的整数 random.randrange([start], stop[, step]) 从指定范围内,按指定基数递增的集合中 获取一个随机数 choice(seq) 从序列seq中返回随机的元素 shuffle(seq[, random]) 原地指定s

  • python中random随机函数详解

    目录 一.random基础 二.实数分布 2.1 对称分布 2.2 指数分布 2.3 Beta 分布 2.4 Gamma 分布 2.5 高斯分布 2.6 对数正态分布 2.7 正态分布 2.8 冯·米塞斯分布 2.9 帕累托分布 2.10 威布尔分布 总结 加载相关库 import random import seaborn as sns import matplotlib.pyplot as plt # 解决中文不显示的问题 from pylab import mpl mpl.rcParams

  • C++ Boost Random随机函数详解

    目录 一.说明 二.示例代码 一.说明 Boost.Random 库提供了许多随机数生成器,可让您决定应如何生成随机数.在 C++ 中,始终可以使用来自 cstdlib 的 std::rand() 生成随机数.但是,使用 std::rand() 生成随机数的方式取决于标准库的实现方式. 当包含头文件 boost/random.hpp 时,您可以使用 Boost.Random 中的所有随机数生成器和其他类和函数. 该库的大部分已添加到 C++11 的标准库中.如果您的开发环境支持 C++11,您可

  • Python中字符串切片详解

    目录 1.没有步长的简单切片 2.有步长的切片方式 在python中,我们定义好一个字符串,如下所示. 在python中定义个字符串然后把它赋值给一个变量.我们可以通过下标访问单个的字符,跟所有的语言一样,下标从0开始.这个时候呢,我们可以通过切片的方式来截取出我们定义的字符串的一部分.使用切片的时候我们有两种方式:没有步长的简单切片和有步长的切片方式 1.没有步长的简单切片 语法格式是这样的: 首先定义一格字符串,比如叫s,然后给它赋值 截取字符串中的一部分,我们用的语法是 s[ start:

  • 关于Python中的闭包详解

    目录 1.闭包的概念 2.实现一个闭包 3.在闭包中外函数把临时变量绑定给内函数 4.闭包中内函数修改外函数局部变量 5.注意: 6.练习: 总结 1.闭包的概念 请大家跟我理解一下,如果在一个函数的内部定义了另一个函数,外部的我们叫他外函数,内部的我们叫他内函数.闭包: 在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用.这样就构成了一个闭包.一般情况下,在我们认知当中,如果一个函数结束,函数的内部所有东西都会释放掉,还给内存,局部变量都会消失.但

  • Python中BeautifulSoup模块详解

    目录 前言 安装库 导入库 解析文档示例 提取数据示例 CSS选择器 实例小项目 总结 前言 BeautifulSoup是主要以解析web网页的Python模块,它会提供一些强大的解释器,以解析网页,然后提供一些函数,从页面中提取所需要的数据,目前是Python爬虫中最常用的模块之一. 安装库 在使用前需要安装库,这里建议安装bs4,也就是第四版本,因为根据官方文档第三版的已经停止更新.同时安装lxml解释器 pip3 install bs4 pip3 install lxml 导入库 from

  • Python中reduce函数详解

    目录 1 reduce用法 2 reduce与for循环性能对比 reduce函数原本在python2中也是个内置函数,不过在python3中被移到functools模块中. reduce函数先从列表(或序列)中取出2个元素执行指定函数,并将输出结果与第3个元素传入函数,输出结果再与第4个元素传入函数,…,以此类推,直到列表每个元素都取完. 1 reduce用法 对列表元素求和,如果不用reduce,我们一般常用的方法是for循环: def sum_func(arr):     if len(a

  • Python中Threading用法详解

    Python的threading模块松散地基于Java的threading模块.但现在线程没有优先级,没有线程组,不能被销毁.停止.暂停.开始和打断. Java Thread类的静态方法,被移植成了模块方法. main thread: 运行python程序的线程 daemon thread 守护线程,如果守护线程之外的线程都结束了.守护线程也会结束,并强行终止整个程序.不要在守护进程中进行资源相关操作.会导致资源不能正确的释放.在非守护进程中使用Event. Thread 类 (group=No

  • Python 中的 else详解

    我们都知道 Python 中else的基本用法是在条件控制语句中的 if...elif...else...,但是 else 还有两个其它的用途,一是用于循环的结尾,另一个是用在错误处理的 try 中.这原本是 Python 的标准语法,但由于和大部分其它编程语言的习惯不太一样,致使人们有意或无意地忽略了这些用法.另外,对于这些用法是否符合 0×00 The Zen of Python 的原则以及该不该广泛使用也存在很多争议.例如在我看到的两本书里(Effective Python VS Writ

  • Python 中 Meta Classes详解

    接触过 Django 的同学都应该十分熟悉它的 ORM 系统.对于 python 新手而言,这是一项几乎可以被称作"黑科技"的特性:只要你在models.py中随便定义一个Model的子类,Django 便可以: 获取它的字段定义,并转换成表结构 读取Meta内部类,并转化成相应的配置信息.对于特殊的Model(如abstract.proxy),还要进行相应的转换 为没有定义objects的Model加上一个默认的Manager 开发之余,我也曾脑补过其背后的原理.曾经,我认为是这样的

随机推荐