Python之random库的详细使用【生成随机数据】(python random生成随机数)

网友投稿 556 2022-08-28


Python之random库的详细使用【生成随机数据】(python random生成随机数)

前言

① random 库是使用随机数的Python标准库。

②伪随机数:采用梅森旋转算法生成的随机序列中元素。

(随机数是随机产生的数据(比如抛硬币),但是计算机是不可能产生随机值,真正的随机数也是在特定条件下产生的确定值,计算机不能产生真正的随机数,那么伪随机数也就被称为随机数。)

③导入:import random

一、基本随机数

Python中产生随机数使用随机数种子来产生【只要种子相同,产生的随机序列,无论是每一个数,还是数与数之间的关系都是确定的,所以随机数种子确定了随机序列的产生】

random.seed(a=None)

设置随机种子数,可以是浮点数或整数,如果不设置的话,则random库默认以系统时间产生当作随机数种子,设置种子的好处是可以重复再现相同的随机数序列

二、返回整数

random.randrange

语法格式

两种写法

random.randrange(stop)random.randrange(start, stop[, step])

start:起始数字,包含(取得到 start 这个值)stop:末尾数字,不包含(取不到 stop 这个值)step:步长

例如:

# 栗子一for i in range(5): print(random.randrange(20))####174774# 栗子二for i in range(5): print(random.randrange(10, 20))####1314111717# 栗子三for i in range(5): print(random.randrange(10, 20, 2))####1212141410

random.randint

语法格式

random.randint(a, b)

返回随机整数N满足  a <= N <= b相当于 random.randrange(a, b+1)【a、b 都可以取得到值】

例如:

for i in range(5): print(random.randint(0,20))####19201163

三、返回浮点数

random.random()

语法格式

random.random()

返回 [0.0, 1.0) 范围内的下一个随机浮点数

例如:

# 栗子一for i in range(5): print(random.random())####0.98294922431653350.434735064301057240.51987091872430760.64378843058207360.7216771961168909# 栗子二for i in range(5): print(math.ceil(random.random() * 1000))####77235232162127

random.uniform(a, b)

语法格式

random.uniform(a, b)

返回一个随机浮点数N当

​​a <= b​​

时,

​​a <= N <= b​​

​​b <= a​​

时,

​​b <= N <= a​​

例如:

# 栗子一for i in range(5): print(random.uniform(1, 10))####2.62002620897545939.2205069114692353.02068967040147839.6709053303391741.170694187192196# 栗子二for i in range(5): print(random.uniform(8, 2))####2.6968427579542656.0587949351102757.5676312200151442.20576982022580744.454083664106361

四、传递列表作为参数

random.choice

random.choice(seq)

从非空序列 seq 返回一个随机元素如果 seq 为空,会抛出 IndexError

例如:

# 数字数组print(random.choice([1, 2, 3, 4, 5]))# 字母数组print(random.choice(["a", "b", "c"]))# 字母元组print(random.choice(("a", "b", "c")))# 字符串print(random.choice("abcdef"))# string 模块返回的大小写字母字符串print(random.choice(string.ascii_letters))# string 模块返回的数字字符串print(random.choice(string.digits))# string 模块返回的数字字符串+大小写字母字符串print(random.choice(string.digits + string.ascii_uppercase))####5ccel2F

random.choices

语法格式

random.choices(population, weights=None, *, cum_weights=None, k=1)

populaiton:序列weights:普通权重cum_weights:累加权重k:选择次数weights 和 cum_weights 不能同时传,只能选择一个来传

例如:

①不带参数的栗子:可以重复取元素

a = [1,2,3,4,5]print(random.choices(a,k=5))# 结果[5, 5, 3, 1, 5]

②带 weight 的栗子一:

a = [1, 2, 3, 4, 5]print(random.choices(a, weights=[0, 0, 1, 0, 0], k=5))# 结果[3,3,3,3,3]

序列有多长,weights 对应的序列就得多长,每个位置都是一一对应像这里,3 的权重是 1,其他是 0 ,所以每次都取 3,因为它的权重最高,其他元素没有权重

③带 weight 的栗子二:2 的权重更大,所以取到它的概率更高

a = [1, 2, 3, 4, 5]print(random.choices(a, weights=[0, 2, 1, 0, 0], k=5))# 结果[2, 2, 2, 2, 3]

④带 cum_weights 的栗子:

a = [1, 2, 3, 4, 5]print(random.choices(a, cum_weights=[1, 1, 1, 1, 1], k=5))print(random.choices(a, cum_weights=[1, 4, 4, 4, 4], k=5))print(random.choices(a, cum_weights=[1, 2, 3, 4, 5], k=5))# 结果[1, 1, 1, 1, 1][2, 2, 1, 2, 1][5, 5, 1, 4, 2]

random.shuffle

语法格式

random.shuffle(x[, random])

将序列x随机打乱位置只能是列表;元组和字符串会报错random 暂时没找到有什么用,可以忽略

例如:

# 数字数组a = [1, 2, 3, 4, 5]random.shuffle(a)print(a)# 字母数组b = ["a", "b", "c"]random.shuffle(b)print(b)####[3, 5, 2, 4, 1]['a', 'c', 'b']

random.sample

语法格式

random.sample(population, k)

从 population 中取 k 个元素,组成新的列表并返回每次取元素都是不重复的,所以 population 的长度必须 ≥ k,否则会报错

例如:

# 数字数组print(random.sample([1, 2, 3, 4, 5], 3))# 字母数组print(random.sample(["a", "b", "c"], 3))# 字母元组print(random.sample(("a", "b", "c"), 3))# 字符串print(random.sample("abcdef", 3))# string 模块返回的大小写字母字符串print(random.sample(string.ascii_letters, 3))# string 模块返回的数字字符串print(random.sample(string.digits, 3))# string 模块返回的数字字符串+大小写字母字符串print(random.sample(string.digits + string.ascii_uppercase, 3))####[2, 1, 3]['b', 'c', 'a']['a', 'b', 'c']['a', 'f', 'b']['M', 'w', 'W']['7', '1', '5']['R', '8', 'O']

去期待陌生,去拥抱惊喜。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python中变量的作用域及global用法(在python中可以使用global作为变量名)
下一篇:解决springboot项目打成jar包后运行时碰到的小坑
相关文章

 发表评论

暂时没有评论,来抢沙发吧~