暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Python常用模块7-Python的random模块简介

原创 只是甲 2021-04-14
1723

Table of Contents

一Python的random模块介绍

Python中的random模块用于生成随机数.
几乎所有模块函数都依赖于基本函数 random() ,它在半开放区间 [0.0,1.0) 内均匀生成随机浮点数。 Python 使用 Mersenne Twister 作为核心生成器。 它产生 53 位精度浮点数,周期为 2**19937-1 ,其在 C 中的底层实现既快又线程安全。 Mersenne Twister 是现存最广泛测试的随机数发生器之一。 但是,因为完全确定性,它不适用于所有目的,并且完全不适合加密目的。

这个模块提供的函数实际上是 random.Random 类的隐藏实例的绑定方法。 你可以实例化自己的 Random 类实例以获取不共享状态的生成器。

方法 方法概述
random.random() 用于生成一个0到1的 [0,1.0),不包含1
random.uniform(a,b) 用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限
可以是a > b,也可以是a < b
random.randint(a, b) 用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b
random.randrange([start], stop[, step]) 从指定范围内,按指定基数递增的集合中 获取一个随机数
random.choice(sequence) random.choice从序列中获取一个随机元素
random.shuffle(x[, random]) 用于将一个列表中的元素打乱,即将列表内的元素随机排列
random.sample(sequence, k) 从指定序列中随机获取指定长度的片断并随机排列

1.1 random.random()

用于生成一个0到1的 [0,1.0),不包含1

>>> print(random.random()) 0.5714025946899135 >>> print(random.random()) 0.4288890546751146 >>> print(random.random()) 0.5780913011344704 >>>

1.2 random.uniform(a,b)

用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限
可以是a > b,也可以是a < b

>>> print(random.uniform(1,10)) 2.8548840892555156 >>> print(random.uniform(100,10)) 26.8010873778412 >>> >>> print(random.uniform(10,10)) 10.0 >>> >>> print(random.uniform(0.001,1)) 0.6538190613672746 >>> print(random.uniform(0.001,1)) 0.16106932696230084 >>>

1.3 random.randint(a, b)

用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b

>>> print(random.randint(0.001,1)) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\random.py", line 220, in randint return self.randrange(a, b+1) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\random.py", line 184, in randrange raise ValueError("non-integer arg 1 for randrange()") ValueError: non-integer arg 1 for randrange() >>> >>> print(random.randint(0,1)) 1 >>> print(random.randint(0,100)) 41 >>> print(random.randint(1000,100)) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\random.py", line 220, in randint return self.randrange(a, b+1) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\random.py", line 198, in randrange raise ValueError("empty range for randrange() (%d,%d, %d)" % (istart, istop, width)) ValueError: empty range for randrange() (1000,101, -899) >>>

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

从指定范围内,按指定基数递增的集合中 获取一个随机数

>>> print(random.randrange(1,10,2)) 1 >>> print(random.randrange(1,10,2)) 3 >>> print(random.randrange(1,10,2)) 5 >>> print(random.randrange(1,10,2)) 1 >>> print(random.randrange(1,10,2)) 7 >>> print(random.randrange(1,10,2)) 3 >>> print(random.randrange(1,10,2)) 9 >>>

1.5 random.choice(sequence)

random.choice从序列中获取一个随机元素

>>> print(random.choice(['Oracle','MySQL','SQL Server','Postgresql'])) SQL Server >>> print(random.choice(['Oracle','MySQL','SQL Server','Postgresql'])) SQL Server >>> print(random.choice(['Oracle','MySQL','SQL Server','Postgresql'])) Postgresql

1.6 random.shuffle(x[, random])

用于将一个列表中的元素打乱,即将列表内的元素随机排列

>>> db = ['Oracle','MySQL','SQL Server','Postgresql'] >>> random.shuffle(db) >>> print(db) ['Oracle', 'Postgresql', 'SQL Server', 'MySQL'] >>>

1.7 random.sample(sequence, k)

从指定序列中随机获取指定长度的片断并随机排列

>>> import random >>> db = ['Oracle','MySQL','SQL Server','Postgresql'] >>> print(random.sample(db,4)) ['SQL Server', 'Oracle', 'MySQL', 'Postgresql'] >>> print(random.sample(db,3)) ['Postgresql', 'SQL Server', 'MySQL'] >>> print(random.sample(db,2)) ['Oracle', 'SQL Server'] >>> >>> print(random.sample(db,1)) ['Oracle'] >>> >>> print(db) ['Oracle', 'MySQL', 'SQL Server', 'Postgresql'] >>>

参考

1.https://docs.python.org/zh-cn/3.6/library/random.html
2.https://www.cnblogs.com/liangmingshen/p/8909376.htm

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论