如何在Python中生成随机数(包括使用random、numpy和secrets模块) - 果核剥壳

随机数在Python编程中是非常常见的需求,它们在模拟、密码学、游戏和数据分析等领域中起着重要的作用。幸运的是,Python提供了多种方法来生成随机数。本文将介绍Python生成随机数的几种常用方法,包括使用random、numpy和secrets模块。

方法一:使用random模块
random模块是Python标准库中提供的一个用于生成伪随机数的模块,它包含了多种函数,可以生成不同类型和范围的随机数。例如,random.randint(a, b)可以生成一个[a, b]区间内的整数,random.uniform(a, b)可以生成一个[a, b)区间内的浮点数,random.choice(seq)可以从一个序列中随机选择一个元素,random.shuffle(seq)可以打乱一个序列的顺序,等等。

下面是一些使用random模块的示例:

PYTHON

import random

# 生成一个[0, 10]区间内的整数
n = random.randint(0, 10)
print(n)

# 生成一个[0, 1)区间内的浮点数
x = random.random()
print(x)

# 生成一个[5, 10)区间内的浮点数
y = random.uniform(5, 10)
print(y)

# 从一个列表中随机选择一个元素
lst = ["apple", "banana", "cherry"]
fruit = random.choice(lst)
print(fruit)

# 打乱一个列表的顺序
random.shuffle(lst)
print(lst)
方法二:使用numpy模块
numpy模块是一个用于科学计算的第三方库,它提供了多维数组对象和一系列操作数组的函数。numpy模块也包含了一些生成随机数的函数,例如numpy.random.randint(low, high, size)可以生成一个指定大小的整数数组,numpy.random.rand(d0, d1, …, dn)可以生成一个指定形状的浮点数数组,numpy.random.choice(a, size, replace, p)可以从一个给定的数组中随机抽取元素,等等。

下面是一些使用numpy模块的示例:

PYTHON

import numpy as np

# 生成一个(3, 4)形状的整数数组,元素在[0, 10)区间内
arr1 = np.random.randint(0, 10, (3, 4))
print(arr1)

# 生成一个(2, 3)形状的浮点数数组,元素在[0, 1)区间内
arr2 = np.random.rand(2, 3)
print(arr2)

# 从一个数组中随机抽取3个元素,不放回
arr3 = np.array([1, 2, 3, 4, 5])
sample = np.random.choice(arr3, 3, replace=False)
print(sample)
方法三:使用secrets模块
secrets模块是Python3.6及以上版本中提供的一个用于生成加密强随机数的模块,它包含了一些函数,可以生成安全的令牌、密码、验证码等。secrets模块与random模块类似,但是更适合用于安全相关的场景,因为它使用了更高质量的随机源。

例如,secrets.randbelow(n)可以生成一个小于n的非负整数,secrets.randbits(k)可以生成一个k位的二进制数,secrets.token_bytes(nbytes)可以生成一个指定字节数的字节串,secrets.token_hex(nbytes)可以生成一个指定字节数的十六进制字符串,等等。

下面是一些使用secrets模块的示例:

PYTHON

import secrets

# 生成一个小于100的非负整数
n = secrets.randbelow(100)
print(n)

# 生成一个8位的二进制数
b = secrets.randbits(8)
print(b)

# 生成一个16字节的字节串
s = secrets.token_bytes(16)
print(s)

# 生成一个16字节的十六进制字符串
h = secrets.token_hex(16)
print(h)

如果您喜欢本站,点击这儿不花一分钱捐赠本站

这些信息可能会帮助到你: 下载帮助 | 报毒说明 | 进站必看

修改版本安卓软件,加群提示为修改者自留,非本站信息,注意鉴别

(0)
上一篇 2023年9月1日 上午10:04
下一篇 2023年9月1日 上午10:09

相关推荐

发表回复

评论问题之前,点击我,能帮你解决大部分问题

您的电子邮箱地址不会被公开。 必填项已用*标注