python教程,如何获得一组随机数?如何设置随机数种子?
发布于 作者:苏南大叔 来源:程序如此灵动~python
里面的随机数的问题相关的函数很多,可能并不仅限于本文中涉及的函数。只要有随机的概念在里面的python
函数,基本上都会碰到随机数种子的问题。那么,为什么要设置随机数种子?随机数种子有什么作用呢?
苏南大叔的“程序如此灵动”技术博客,记录苏南大叔的代码编程经验文章。本文测试环境:win10
,python@3.11.0
,pandas@1.5.3
,numpy@1.24.2
。在目前已知的范围内,一共有random
和numpy.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之间的随机整数
相关文章
- https://newsn.net/say/node-nanoid.html
- https://newsn.net/say/numpy-random.html
- https://newsn.net/say/python-random.html
结束语
苏南大叔的python
相关文章链接,请点击下面的文章:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。