python生成随机数:uniform(), randint(), gauss(), expovariate()

目录

  • 22、python生成随机数:uniform(), randint(), gauss(), expovariate()

    • 22.1 模块:random内建模块,伪随机数生成器
    • 22.2 播种随机数,即用随机数种子seed控制随机数
    • 22.3 在已知的范围内生成随机数,例如[2, 5],那就可以random.random()*3 + 2, uniform(2,5), randint(2,5)
    • 22.4 从列表中随机选择一个值:choice(), choices()
    • 22.5 shuffling改组列表,对列表随机重排
    • 22.6 根据概率分布生成随机数:gauss(), expovariate()

22、python生成随机数:uniform(), randint(), gauss(), expovariate()

22.1 模块:random内建模块,伪随机数生成器

使用Mersenne Twister的伪随机数生成器PRNG进行生成,它以一个确定的数字作为属于,并为其生成一个随机数;为了安全起见,不要用PRNG生成随机数,要用secrets模块的真随机数TRNG生成;

22.2 播种随机数,即用随机数种子seed控制随机数

>>> import random
## 1、当不指定种子seed时,PRNG每次生成的数不一样
>>> print(‘Random Number 1=>‘,random.random())
Random Number 1=> 0.21008902332926982
>>> print(‘Random Number 2=>‘,random.random())
Random Number 2=> 0.434434837731393

## 2、当指定种子seed时,PRNG每次生成的数是一样的,所以称为伪随机数
>>> random.seed(42)
>>> print(‘Random Number 1=>‘,random.random())
Random Number 1=> 0.6394267984578837
>>> random.seed(42)
>>> print(‘Random Number 2=>‘,random.random())
Random Number 2=> 0.6394267984578837

22.3 在已知的范围内生成随机数,例如[2, 5],那就可以random.random()*3 + 2, uniform(2,5), randint(2,5)

## 1、random.random()*3 + 2
>>> print(‘Random Number in range(2,8)=>‘, random.random()*6+2)
Random Number in range(2,8)=> 2.1500645313360014

## 2、uniform():获取开始值和结束值作为参数,返回一个浮点型的随机数
>>> print(‘Random Number in range(2,8)=>‘, random.uniform(2,8))
Random Number in range(2,8)=> 3.6501759102147155

## 3、randint():和uniform相似,不同的是返回值为一个整数
>>> print(‘Random Number in range(2,8)=>‘, random.randint(2,8))
Random Number in range(2,8)=> 3

22.4 从列表中随机选择一个值:choice(), choices()

## 1、choice会从这个列表中随机选择一个值
>>> a=[5,9,20,10,2,8]
>>> print(‘Randomly picked number=>‘,random.choice(a))
Randomly picked number=> 9
>>> print(‘Randomly picked number=>‘,random.choice(a))
Randomly picked number=> 8
>>> print(‘Randomly picked number=>‘,random.choice(a))
Randomly picked number=> 5

## 2、choices会从这个列表中随机选择多个值(随机数的数量可以超过列表程度)
>>> print(‘Randomly picked number=>‘,random.choices(a,k=3))
Randomly picked number=> [5, 20, 5]
>>> print(‘Randomly picked number=>‘,random.choices(a,k=3))
Randomly picked number=> [9, 10, 5]
>>> print(‘Randomly picked number=>‘,random.choices(a,k=3))
Randomly picked number=> [9, 10, 10]

## 3、choices利用weights将数组作为权重传递,增加每个值被选取的可能性
>>> print(‘Randomly picked number=>‘,random.choices(a,weights=[1,1,1,3,1,1],k=3))
Randomly picked number=> [5, 5, 2]
>>> print(‘Randomly picked number=>‘,random.choices(a,weights=[1,1,1,3,1,1],k=3))
Randomly picked number=> [10, 2, 10]
>>> print(‘Randomly picked number=>‘,random.choices(a,weights=[1,1,1,3,1,1],k=3))
Randomly picked number=> [10, 8, 10]

22.5 shuffling改组列表,对列表随机重排

>>> print(‘Original list=>‘,a)
Original list=> [5, 9, 20, 10, 2, 8]
>>> random.shuffle(a)
>>> print(‘Shuffled list=>‘,a)
Shuffled list=> [10, 5, 8, 9, 2, 20]

22.6 根据概率分布生成随机数:gauss(), expovariate()

(1)高斯分布gauss()

>>> import random
>>> import matplotlib.pyplot as plt
>>> temp = []
>>> for i in range(1000):
... temp.append(random.gauss(0,1))
...
>>> plt.hist(temp, bins=30)
>>> plt.show()

(2)变数分布expovariate():以lambda的值作为参数,lambda为正,则返回从0到正无穷的值;如果lambda为负,则返回从负无穷到0的值

>>> print(‘Random number from exponential distribution=>‘,random.expovariate(10))
Random number from exponential distribution=> 0.012164560954097013
>>> print(‘Random number from exponential distribution=>‘,random.expovariate(-1))
Random number from exponential distribution=> -0.6461397037921695

(3)伯努利分布

(4)均匀分布

(5)二项分布

(6)正太分布

(7)泊松分布

参考:https://www.analyticsvidhya.com/blog/2020/04/how-to-generate-random-numbers-in-python/?utm_source=feedburner&utm_medium=email&utm_campaign=Feed%3A+AnalyticsVidhya+(Analytics+Vidhya)

其他六种不同的概率分布:https://www.analyticsvidhya.com/blog/2017/09/6-probability-distributions-data-science/?utm_source=blog&utm_medium=how-to-generate-random-numbers-in-python

原文地址:https://www.cnblogs.com/hugechuanqi/p/12704366.html

时间: 2024-11-07 07:08:59

python生成随机数:uniform(), randint(), gauss(), expovariate()的相关文章

【python】【转】Python生成随机数的方法

如果你对在Python生成随机数与random模块中最常用的几个函数的关系与不懂之处,下面的文章就是对Python生成随机数与random模块中最常用的几个函数的关系,希望你会有所收获,以下就是这篇文章的介绍.random.random()用于生成用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限.如果a > b,则生成随机数n: a <= n <= b.如果 a <b, 则 b <= n <= a.print random.uniform(10,

python 生成随机数

import random import string import time from datetime import date,timedelta class randoms(): # 获取26个大小写字母 letters = string.ascii_letters # 获取26个小写字母 Lowercase_letters = string.ascii_lowercase # 获取26个大写字母 Capital = string.ascii_uppercase # 获取阿拉伯数字 dig

python生成随机数、随机字符串

import randomimport string # 随机整数:print random.randint(1,50) # 随机选取0到100间的偶数:print random.randrange(0, 101, 2) # 随机浮点数:print random.random()print random.uniform(1, 10) # 随机字符:print random.choice('[email protected]#$%^&*()') # 多个字符中生成指定数量的随机字符:print r

Python 生成随机数函数和加密函数(MD5)

内容来自debugtalk import hashlib import random import string def gen_random_string(str_len): '''生成指定长度的随机数函数''' return ''.join( random.choice(string.ascii_letters + string.digits) for _ in range(str_len)) def gen_md5(*args): '''MD5加密''' return hashlib.md

[ Python入门教程 ] Python生成随机数模块(random)使用方法

1.生成指定范围内的随机整数 >>> random.randint(0,100) 28 >>> random.randint(0,100) 36 >>> random.randint(0,100) 71 2.指定序列中随机选1个元素 >>> random.choice(range(1,100)) 10 >>> random.choice(range(1,100)) 36 >>> random.cho

使用Python生成随机数

另一种方式是把包含整数0~n-1的数组顺序打乱,然后把前m个元素排序输出: for i in range(0, m): swap(i, randint(i, n-1))

【转载】python 模块 - random生成随机数模块

http://blog.csdn.net/pipisorry/article/details/39086463 随机数种子 要每次产生随机数相同就要设置种子,相同种子数的Random对象,相同次数生成的随机数字是完全相同的: random.seed(1) 这样random.randint(0,6, (4,5))每次都产生一样的4*5的随机矩阵 关于种子的介绍可参见[Java - 常用函数Random函数] Python标准库random模块 (生成随机数模块) random.random() r

Python:time模块&amp;序列化&amp;md5&amp;生成随机数&amp;反射

time模块:>>> import time >>> time.time <built-in function time> >>> time.time() 1473837803.320634 >>> time.localtime() time.struct_time(tm_year=2016, tm_mon=9, tm_mday=14, tm_hour=15, tm_min=23, tm_sec=58, tm_wday=2

Python Random随机数

Python产生随机数的功能在random模块中实现.实现了各种分布的伪随机数生成器 该模块能够生成0到1的浮点随机数,也能够在一个序列中进行随机选择.产生的随机数能够是均匀分布.高斯分布,对数正态分布.负指数分布以及alpha.beta分布.可是呢,这些随机数不适合使用在以加密为目的的应用中 你也能够自己派生一个Random类的子类,自己去实现子类中的random(),seed().getstate(),setstate()函数,一个新的产生器能够提供一个getrandbits()方法.这同意