random在python中的意思python-random模块详解
0.摘要
本⽂主要介绍random模块的各种⽅法,并⽤python3做功能展⽰。
1.random.random()
产⽣⼀个位于[0,1)区间的随机数。
random.random() #产⽣⼀个[0,1)的数
10 * random.random() #产⽣⼀个[0,10)的数
2.random.uniform(a,b)
这个⽅法的官⽅解释很⾼深,理解不了:
uniform(a, b) method of random.Random instance
Get a random number in the range [a, b) or [a, b] depending on rounding.
右区间的开闭取决于四舍五⼊,怎么个四舍五⼊呢?到⼀个看似正确的解释,供和我⼀样迷惑的读者参考吧。
a = random.uniform(1.23,4.56) #产⽣⼀个位于1.23~4.56范围内的随机数
b = random.uniform(1.5,-10) #产⽣⼀个位于-10~1.5范围内的随机数
我⾃⼰的直观理解,就是random.uniform(a,b),得到的是⼀个位于a,b之间的随机数(暂且不讨论区间开闭问题),
并且,a > b,a =b,a<b都可以。
3.random.randint(a,b)
⽣成⼀个位于[a,b]的随机整数。a<=b 。注意,两边都是闭区间。
r = random.randint(-100,100) #产⽣⼀个位于[-100,100]区间内的整数
4.random.randrange(start,stop,step)
⽣成⼀个位于[start,stop)的随机整数,注意,start,stop,step都必须是整数,step为可选参数,默认
步长为1。
这个函数主要是为了弥补randint⽅法的不⾜,因为randint随机数⽣成区间两边都是闭区间,这在python中是不友好的。并且,start 可以⼩于 stop(步长需要为负数)。
r = random.randrange(1,100) #产⽣⼀个在[1,100)之间的整数
r = random.randrange(100,0,-2) #从(0,100]区间中,随机取⼀个偶数
5.random.sample(population, k)
从population取k个不重复的元素,并存放到列表中,原始数据population保持不变。
population可以是列表、元组、集合。
a = range(100)
b = set(a)
print(random.sample(a,10)) #从列表a中随机取10个元素
print(random.sample(b,10)) #从集合b中随机取10个元素
6.random.choice(seq)
从⾮空列表中随机选取⼀个元素。
seq可以是列表、元组。
a = range(100)
b = tuple(a)
print(random.choice(a)) # 从列表a中随机选取⼀个元素
print(random.choice(b)) # 从元组b中随机选取⼀个元素
7.random.shuffle(x, random=None)
将x随机打乱,并替换现有的x。该函数没有返回值。
这⾥说⼀下random参数:这个参数通常不使⽤,它要求是⼀个函数,该函数⽆参数,能够返回 [0.0, 1.0)的随机值。如果random=None,则random=random.random.
a = list(range(10))
print(a)
random.shuffle(a)
print(a)
运⾏上述程序,我们会发现执⾏random.shuffle前后的两个a不同了,后者被随即打乱。
这⾥再举⼀个random参数的例⼦,不再详细说明:
import random
import numpy as np
a = list(range(10))
random.shuffle(a,np.random.random)
print(a)
8.random.seed(x)
random.seed(x)⽤于设置随机函数的初始状态,如果x相同,那么两次random操作,得到的结果就是相同的。
x是实数,可以是整数,也可以是浮点数,可以使正数,也可以是负数或0。
import random
a = random.random()
b = random.random()
print(a,b)
random.seed(0)
a = random.random()
random.seed(0)
b = random.random()
print(a,b)
从结果上看,第⼀次a,b是不同的,第⼆次的a,b是相同的。
注意:random.seed()作⽤效果只有⼀次:
import random
random.seed(1)
for _ in range(10):
print(random.randint(1,10),end=' ')
print()
print('==================================')
for _ in range(10):
random.seed(1)
print(random.randint(1, 10),end=' ')
由于第⼆次random.seed()写在了for循环中,所以输出的都是3.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论