python工具:random

1.所需模块

随机数需要用的的模块为random,该模块用于生成伪随机数或随机选择序列中的元素。内部提供了多种函数,可生成不同类型随机数,如:整数、浮点数、随机序列、随机字符串、洗牌、抽样等。

文档:https://docs.python.org/3/library/random.html

源代码:https://github.com/python/cpython/blob/3.12/Lib/random.py

2.方法概览

  1. 整数随机数

    randint(a, b):返回 [a,b] 区间内一个随机整数

    randrange([start=0,] stop[, step=1])

  2. 浮点随机数

    (1)random():返回 [0.0, 1.0) 之间的一个随机浮点数

    (2)uniform(a, b):返回 [a,b] 区间内的一个随机浮点数

  3. 列表随机数

    (1)shuffle(seq):将序列 seq 中的元素进行随机排序

    (2)choice(seq):从序列 seq 中随机返回一个元素

    (3)sample(seq, [counts], k):从序列 seq 中随机选择 k 个元素作为列表返回,counts 是辅助输入多个数据的计数列表(具体看例子)

    (4)choices(seq[, cum_weights, k=1]):从序列 seq 中根据权值列表 cum_weights 中对应的权值来随机选择 k 个元素来作为列表返回

3.细节解说

几乎所有的模块函数都依赖于基本函数 random(),它会在半开放范围内均匀地生成一个随机浮点数,范围是 [0.0, 1.0)

其底层使用了 Mersenne Twister ,是目前测试最广泛的随机数生成器之一(但是其随机是具有确定性的,不适用于加密工作,应该使用 secrets 模块来生成用于安全的随机数)。

上述的序列指的是:字符串(str)、列表(list)、元组(tuple)、集合(set)、字典(dict)、字节数组(bytearray)、字节数组(bytes)。

补充:而由于该库内还包含一些关于离散分布等数学类的库,不结合数学原理还真说不清,待补充…

"""使用随机数的库"""
from random import *
# 1.整数随机数
print("整数随机数")
print(f"randint(1, 10):{randint(1, 10)}")
print(f"randrange(0, 10, 2):{randrange(0, 10, 2)}")
print()


# 2.浮点随机数
print("浮点随机数")
print(f"random():{random()}")
print(f"uniform(1, 10):{uniform(1, 10)}")
print()


# 3.列表随机数
print("列表随机数")

arr = [1, 2, 3, 4, 5]
shuffle(arr)
print(f"shuffle(arr):{arr}")

print(f"choice([1, 2, 3, 4, 5]):{choice([1, 2, 3, 4, 5])}")

# 以下两种写法等价
print(f"sample(['red', 'blue'], counts=[4, 2], k=5):{sample(['red', 'blue'], counts=[4, 2], k=5)}")
print(f"sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5):{sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5)}")

print(f"choices(['red', 'black', 'green'], [18, 18, 2], k=6):{choices(['red', 'black', 'green'], [18, 18, 2], k=6)}")
print()

你可能感兴趣的:(Python(第一版),python,开发语言)