怎么用Python生成随机数?

Python是一种面向对象、解释型、动态数据类型的高级编程语言 。它有着简单易学、开源免费、跨平台、丰富的第三方库等诸多优势 , 在数据科学、人工智能、Web开发等领域得到广泛应用 。其中 , 生成随机数是Python的一个基础功能 , 在科学计算、游戏开发、密码学等方面都有着重要的作用 。本文将从多个角度分析Python生成随机数的方法和应用 , 帮助读者更好地理解和运用这一功能 。
一、Python生成伪随机数

怎么用Python生成随机数?

文章插图
伪随机数是计算机程序生成的数字序列 , 看似随机但实际上是按照某种算法计算得出的 , 因此也称为伪随机数 。Python中的随机数模块random就是基于伪随机数算法实现的 。下面是一些常用的随机数函数:
1. random.random():返回一个0到1的随机浮点数 。
2. random.uniform(a, b):返回一个a到b之间的随机浮点数 。
3. random.randint(a, b):返回一个a到b之间的随机整数 。
4. random.choice(seq):从序列seq中随机选择一个元素 。
5. random.shuffle(seq):将序列seq中的元素随机打乱 。
例如 , 下面的代码可以生成10个0到1之间的随机浮点数:
import random
for i in range(10):
print(random.random())
输出结果如下:
0.7381359493042901
0.3368234100163335
0.7228362764216151
0.9124907066198476
0.4161205395793254
0.8518168025088517
0.6805674741021093
0.9706882691309181
0.10517026216339996
0.6390243556836888
二、Python生成真随机数
真随机数是完全随机的数字序列 , 不受任何算法或模式的影响 , 因此更加安全和可靠 。Python中的random模块虽然可以生成伪随机数 , 但并不能生成真随机数 。如果需要生成真随机数 , 可以使用第三方库或在线API服务 。
常用的第三方库有pycryptodomex、pycryptodome和cryptography等 。以pycryptodomex为例 , 可以使用其Random模块生成真随机数 。下面是一个简单的例子:
from Cryptodome.Random import random
for i in range(10):
print(random.getrandbits(32))
输出结果如下:
3219103724
3149258014
2386203985
3165114617
3847231097
3290127640
2522744351
2378850005
3877651014
4292275481
另外 , 国内有一些真随机数API服务可以使用 , 如阿里云随机数服务、腾讯云随机数服务等 。这些服务都需要注册账号并获取API密钥才能使用 , 但使用起来非常简单 , 只需要向API发送请求即可获得真随机数 。
三、Python生成随机字符串
在实际应用中 , 随机字符串的需求非常常见 , 如生成验证码、密码、加密密钥等 。Python中的random模块也可以用来生成随机字符串 。下面是一个生成6位随机数字的例子:
import random
code = ''
for i in range(6):
code += str(random.randint(0, 9))
print(code)
输出结果如下:
087392
除了随机数字 , 还可以生成随机字母、随机字符串等 。下面是一个生成8位随机字符串的例子:
import random
import string
code = ''.join(random.choices(string.ascii_letters + string.digits, k=8))
print(code)
输出结果如下:
cH3WvOj1
四、Python生成随机数组
在数据科学领域 , 随机数组也是一个重要的应用场景 。Python中的numpy库提供了生成随机数组的多种方法 。下面是一些常用的随机数组函数:
1. np.random.rand(d0, d1, ..., dn):返回一个d0xd1x...xdn的随机浮点数数组 , 每个元素都在[0,1)之间 。

推荐阅读