我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

python里面的随机数的问题相关的函数很多,可能并不仅限于本文中涉及的函数。只要有随机的概念在里面的python函数,基本上都会碰到随机数种子的问题。那么,为什么要设置随机数种子?随机数种子有什么作用呢?

苏南大叔:python教程,如何获得一组随机数?如何设置随机数种子? - python随机数
python教程,如何获得一组随机数?如何设置随机数种子?(图1-1)

苏南大叔的“程序如此灵动”技术博客,记录苏南大叔的代码编程经验文章。本文测试环境:win10python@3.11.0pandas@1.5.3numpy@1.24.2。在目前已知的范围内,一共有randomnumpy.random两个库,可以提供随机数功能。两者功能有重合的地方,也有不同的地方。

随机数种子【不建议设置】

为什么设置随机数种子,设置了种子之后,能够保证接下来的随机过程每次都得到同样的结果。这就是种子存在的意义。看起来结果是随机的,但是每次运行又都能保证随机到同样的数据。对,就是这么神奇。

import random
random.seed(0)
import numpy as np
np.random.seed(0)

值得一提的是:这两个种子的写法看起来一致,但是只是控制当前代码中自己的那部分随机相关函数。比如:np里面的种子控制不了普通的随机。

范例代码:random.

import random

# 设置种子,可以固定随机结果
# random.seed(0)

# 生成0到1之间的随机浮点数
s1 = random.random()
print(s1)

# 指定范围内的随机整数
s2 = random.randint(0, 100)
print(s2)

# 指定范围内的随机浮点数
s3 = random.uniform(0, 100)
print(s3)
print(int(s3), round(s3, 2))  # 向下int,向上保留两位小数

输出:

0.3259105448169396
17
22.272774997874023
22 22.27

更多相关函数,可以参考文章:

范例代码:np.random.

import numpy as np

# 设置种子,可以固定随机结果
# np.random.seed(12345)

# randn生成指定shape的ndarray
n1 = np.random.randn(1, 5)  # 一行五列浮点数(居然有负数)
print(n1)

# randint,只传递前两个参数
# 随机出指定范围内的整数一个,和random.randint()实际效果一致
n2 = np.random.randint(1, 5)
print(n2, type(n2))             # 1 <class 'int'>

# randint,传递三个整数参数
# 随机出指定范围内的整数{第三个整数}个
n2 = np.random.randint(1, 5, 3)
print(n2, type(n2))             # [4 3 2] <class 'numpy.ndarray'>

# randint,第三个参数是shape
# 将在指定shape内,填充指定范围的内的随机整数
# 返回值类型将从整数变成ndarray
n2 = np.random.randint(1, 5, (2, 3))
print(n2, type(n2), n2.shape)   # [[2 1 3] [4 3 3]] <class 'numpy.ndarray'> (2, 3)

# uniform,只传递前两个参数
# 随机出指定范围内的浮点数一个,和random.uniform()实际效果一致
n3 = np.random.uniform(1, 5)
print(n3, type(n3))

# uniform,第三个参数是shape
# 将在指定shape内,填充指定范围的内的随机整数
# 返回值类型将从整数变成ndarray
n3 = np.random.uniform(1, 5, (2, 5))
print(n3, type(n3), n3.shape)

输出:

[[ 1.69132906  0.11393054 -1.01525779  0.21023244  0.3920439 ]]
3 <class 'int'>
[[3 3 4]
 [1 3 4]] <class 'numpy.ndarray'> (2, 3)
4.951231278477524 <class 'float'>
[[1.04217471 2.26956242 1.06277041 3.89681562 4.44072742]
 [2.18216353 2.31508419 4.66646716 4.80554352 4.2368834 ]] <class 'numpy.ndarray'> (2, 5)

更多相关函数,可以参考文章:

随机整数

第一个,random.randint(min,max)函数的最大特点就是随机出来的都是指定范围内的整数int

import random
random.randint(min,max)  # min到max之间的整数

第二个,还有个numpy的同款代码np.random.randint(min,max):

import numpy as np
np.random.randint(min, max)  # 仅仅使用两个参数的时候,返回min到max之间的整数

随机浮点数

第一个,最简单的随机函数random.random(),返回0到1之间的某个随机浮点数。

import random
random.random()  # 0到1之间的浮点数

第二个,random.uniform(min,max)函数的最大特点就是随机出来的都是指定范围内的浮点数float

import random
random.uniform(min,max)  # min到max之间的浮点数

第三个,还有个numpy的同款代码np.random.uniform(min,max):

import numpy as np
np.random.uniform(min, max)  # 仅仅使用两个参数的时候,返回min到max之间的浮点数

随机ndarray

既然ndarray了,就必然引入的是np.random了,而不是单纯的random了。不管哪个函数,都必然要求传递shape信息了。

第一个,np.random.randn(shape):

import numpy as np
np.random.randn(1, 5)  #  一行五列浮点数(居然有负数)

第二个,np.random.uniform(min,max,shape):

import numpy as np
np.random.uniform(1, 5, (2, 5))  # 两行五列,范围是1到5之间的随机浮点数

第三个,np.random.randint(min,max,shape):

import numpy as np
np.random.randint(1, 5, (2, 5))  # 两行五列,范围是1到5之间的随机整数

相关文章

结束语

苏南大叔的python相关文章链接,请点击下面的文章:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python