np.random 是 NumPy 库中用于生成随机数的模块。NumPy 是 Python 里用于科学计算的基础库,np.random 模块提供了多种生成随机数的函数,可用于模拟、统计实验、机器学习等众多场景。下面介绍一些常用的函数及其用法:
1. 生成随机整数
np.random.randint(low, high=None, size=None, dtype=int) 函数可生成指定范围内的随机整数。- import numpy as np
- # 生成一个范围在 0 到 9 之间的随机整数
- random_int = np.random.randint(0, 10)
- print("随机整数:", random_int)
- # 生成一个形状为 (3, 2) 的数组,数组元素是 1 到 10 之间的随机整数
- random_int_array = np.random.randint(1, 11, size=(3, 2))
- print("随机整数数组:\n", random_int_array)
复制代码 2. 生成均匀分布的随机数
np.random.rand(d0, d1, ..., dn) 函数可生成 [0, 1) 区间内均匀分布的随机浮点数。- import numpy as np
- # 生成一个形状为 (2, 3) 的数组,数组元素是 [0, 1) 区间内的随机浮点数
- random_float_array = np.random.rand(2, 3)
- print("均匀分布的随机浮点数数组:\n", random_float_array)
复制代码 3. 生成标准正态分布的随机数
np.random.randn(d0, d1, ..., dn) 函数能生成服从标准正态分布(均值为 0,标准差为 1)的随机浮点数。- import numpy as np
- # 生成一个形状为 (2, 3) 的数组,数组元素是服从标准正态分布的随机浮点数
- random_normal_array = np.random.randn(2, 3)
- print("标准正态分布的随机浮点数数组:\n", random_normal_array)
复制代码 4. 从给定的一维数组中随机抽取元素
np.random.choice(a, size=None, replace=True, p=None) 函数可从给定的一维数组 a 里随机抽取元素。- import numpy as np
- # 定义一个一维数组
- arr = np.array([1, 2, 3, 4, 5])
- # 从数组中随机抽取一个元素
- random_choice = np.random.choice(arr)
- print("随机抽取的元素:", random_choice)
- # 从数组中随机抽取 3 个元素,允许重复抽取
- random_choice_array = np.random.choice(arr, size=3, replace=True)
- print("随机抽取的元素数组:", random_choice_array)
复制代码 5. 打乱数组顺序
np.random.shuffle(x) 函数可对数组 x 的顺序进行随机打乱,该函数会直接修改原数组。- import numpy as np
- # 定义一个一维数组
- arr = np.array([1, 2, 3, 4, 5])
- # 打乱数组顺序
- np.random.shuffle(arr)
- print("打乱顺序后的数组:", arr)
复制代码 6. 设置随机数种子
np.random.seed(seed) 函数可设置随机数种子,这样每次运行代码时生成的随机数序列都会相同,便于结果的复现。- import numpy as np
- # 设置随机数种子
- np.random.seed(42)
- # 生成随机数
- random_num1 = np.random.rand()
- # 再次设置相同的随机数种子
- np.random.seed(42)
- # 生成随机数
- random_num2 = np.random.rand()
- print("第一次生成的随机数:", random_num1)
- print("第二次生成的随机数:", random_num2)
复制代码 6.1 设置随机数种子的有效期是多长?
在使用np.random.seed()设置随机数种子时,其有效期会持续到下一次设置新的种子或者程序结束。
一旦调用了np.random.seed(),之后所有基于np.random生成随机数的操作都会依据这个种子来产生可重复的随机数序列。当你再次调用np.random.seed()并传入新的种子值,那么后续的随机数生成就会基于新的种子。要是在程序运行过程中没有再次调用np.random.seed(),那么种子会持续生效,整个程序里np.random生成的随机数都会保持可重复性。
以下是一个示例代码,用以说明种子的有效期:- import numpy as np
- # 设置随机数种子
- np.random.seed(123)
- # 生成第一个随机数序列
- random_nums_1 = np.random.rand(3)
- print("第一次生成的随机数序列:", random_nums_1)
- # 再次设置相同的随机数种子
- np.random.seed(123)
- # 生成第二个随机数序列,应该和第一个相同
- random_nums_2 = np.random.rand(3)
- print("第二次生成的随机数序列:", random_nums_2)
- # 设置新的随机数种子
- np.random.seed(456)
- # 生成第三个随机数序列,基于新的种子
- random_nums_3 = np.random.rand(3)
- print("第三次生成的随机数序列:", random_nums_3)
复制代码 在这个例子中,第一次和第二次设置相同的种子,生成的随机数序列是一样的;而第三次设置了新的种子,生成的随机数序列就不同了。这就表明,种子的有效期一直到新的种子被设置。
7. 生成均匀分布的随机浮点数
np.random.random() 函数能够生成在 [0.0, 1.0) 区间内均匀分布的随机浮点数。所谓均匀分布,就是指在这个区间内每个数值被生成的概率是相等的。
np.random.random(size=None)
size:该参数为可选参数,用于指定输出数组的形状。若不提供此参数,函数会返回一个单独的随机浮点数;若提供该参数,可以是整数或者整数元组,函数会返回对应形状的数组,数组中的每个元素都是 [0.0, 1.0) 区间内的随机浮点数。
生成单个随机浮点数
- import numpy as np
- # 生成一个 [0.0, 1.0) 区间内的随机浮点数
- single_random_float = np.random.random()
- print("单个随机浮点数:", single_random_float)
复制代码 生成一维随机浮点数数组
- import numpy as np
- # 生成一个包含 5 个随机浮点数的一维数组
- one_dimensional_array = np.random.random(5)
- print("一维随机浮点数数组:", one_dimensional_array)
复制代码 生成多维随机浮点数数组
- import numpy as np
- # 生成一个形状为 (2, 3) 的二维随机浮点数数组
- two_dimensional_array = np.random.random((2, 3))
- print("二维随机浮点数数组:\n", two_dimensional_array)
复制代码 以上是 np.random 模块中部分常用函数的介绍,你可以依据具体需求选用合适的函数来生成随机数。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |