2022-11-04 15:33:31 +08:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# numpy.random.RandomState()函数用法\n",
"\n",
"1. 使用numpy.random.RandomState(1).uniform(1,2,(3,4))函数生成一个3行4列的数组, 其中每个元素都是在[1,2]区间内<font color=red>均匀分布</font>的随机数\n",
"这里 “1” 为随机数种子, 只要随机数种子seed相同, 产生的随机数系列就相同。"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"RandomState(MT19937) \n",
"\n",
"[[1.417022 1.72032449 1.00011437 1.30233257]\n",
" [1.14675589 1.09233859 1.18626021 1.34556073]\n",
" [1.39676747 1.53881673 1.41919451 1.6852195 ]]\n"
]
}
],
"source": [
"rdm = np.random.RandomState(1) # 定义一个随机数种子\n",
"print(rdm,\"\\n\")\n",
"a = rdm.uniform(1,2,(3,4)) # 产生一个3行4列的数组, 其中每个元素都是在[1,2]区间内均匀分布的随机数\n",
"print(a)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"2. 使用numpy.random.RandomState(1).rand(d0,d1,…,dn)函数生成一个给定维度的数组,其中每个元素在[0,1)之间( 包含0, 不包含1) , dn表示各个维度, 返回值为指定维度的array\n",
" - rand(0):表示随机产生一个空数组。\n",
" - rand(n):表示随机产生一个一维的,每个元素在[0,1)之间的n个数字的数组。\n",
" - rand(m,n): 表示随机产生一个m行n列的二维数组。\n",
2022-11-04 15:44:34 +08:00
" - rand(d0,d1,…,dn):表示随机生成一个$d0× d1× \\cdots× dn$维度的数组。"
2022-11-04 15:33:31 +08:00
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[] \n",
"\n",
"[0.90340192 0.1374747 0.13927635] \n",
"\n",
"[[0.80739129 0.39767684]] \n",
"\n",
"[[[0.1653542 0.92750858]\n",
" [0.34776586 0.7508121 ]\n",
" [0.72599799 0.88330609]\n",
" [0.62367221 0.75094243]]\n",
"\n",
" [[0.34889834 0.26992789]\n",
" [0.89588622 0.42809119]\n",
" [0.96484005 0.6634415 ]\n",
" [0.62169572 0.11474597]]\n",
"\n",
" [[0.94948926 0.44991213]\n",
" [0.57838961 0.4081368 ]\n",
" [0.23702698 0.90337952]\n",
" [0.57367949 0.00287033]]] \n",
"\n"
]
}
],
"source": [
"a = rdm.rand(0) #生成一个空数组\n",
"b = rdm.rand(3) # 生成一个一维的,每个元素在[0,1)之间的3个数字的数组\n",
"c = rdm.rand(1,2) # 随机产生一个1行2列的, 每个元素在[0,1)之间的二维数组\n",
"d = rdm.rand(3,4,2) # 生成一个3× 4× 2维度的, 每个元素在[0,1)之间的三维数组\n",
"print(a,\"\\n\")\n",
"print(b,\"\\n\")\n",
"print(c,\"\\n\")\n",
"print(d,\"\\n\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" ## 基于 numpy.random.RandomState(int).rand(d0,d1,…,dn) 与基于numpy.random.rand(d0,d1,…,dn),生成随机数组的区别\n",
" 使用RandomState(int)可以自定义随机数种子,以保证每次执行代码,生成的数组都相同。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2022-11-04 15:40:25 +08:00
"# numpy里random总结: \n",
2022-11-04 15:33:31 +08:00
"\n",
"1. np.random.randn()\n",
"语法: numpy.random.randn(d0,d1,…,dn)\n",
"功能: 用法同np.random.rand()一样,只是服从正态分布。用法同上。\n",
"说明:\n",
"标准正态分布又称为u分布, 是以0为均值、以1为标准差的正态分布, 记为N( 0, 1) 。\n",
"randn函数返回一个或一组样本, 具有标准正态分布。\n",
"dn表格每个维度\n",
"返回值为指定维度的array\n",
"\n",
"2. np.random.randint()\n",
"语法: numpy.random.randint(low, high=None, size=None, dtype=’ l’ )\n",
"功能: 通过low来指定起点, 通过high来指定终点, 通过size参数来指定数组的维度, 通过dtype来确定类型。\n",
"说明:\n",
"返回值为随机整数,范围区间为[low,high) , 包含low, 不包含high\n",
"参数: low为最小值, high为最大值, size为数组维度大小, dtype为数据类型, 默认的数据类型是np.int\n",
"high没有填写时, 默认生成随机数的范围是[0, low)\n",
"\n",
"3. np.random.random(size=None)\n",
"语法: numpy.random.random(size=None)\n",
"功能: 生成[0,1)之间的浮点数, 通过size参数来指定维数。\n",
"说明:\n",
"size : int or tuple of ints, optional.\n",
2022-11-05 15:18:14 +08:00
"Output shape. If the given shape is, e.g., (m, n, k), then m * n * k samples are drawn. Default is None, in which case a single value is returned. \n",
"\n",
"4. numpy.random.rand()\n",
"均匀分布\n",
"范围 [0, 1)\n",
"\n",
"5. numpy.random.normal(loc=mu, scale=sigma, size)\n",
"正态分布\n",
"mu, 均值\n",
"sigma, 标准差\n",
"size, 数据shape, 默认一个值"
2022-11-04 15:33:31 +08:00
]
},
{
"cell_type": "code",
2022-11-05 15:18:14 +08:00
"execution_count": 25,
2022-11-04 15:33:31 +08:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0 0 0 0] \n",
"\n",
2022-11-05 15:18:14 +08:00
"[[ 2 1 0]\n",
" [-2 0 0]] \n",
"\n",
"0.9888926077885405 \n",
2022-11-04 15:33:31 +08:00
"\n",
2022-11-05 15:18:14 +08:00
"[0.32897483] \n",
2022-11-04 15:33:31 +08:00
"\n",
2022-11-05 15:18:14 +08:00
"[0.96680953 0.76946094] \n",
2022-11-04 15:33:31 +08:00
"\n",
2022-11-05 15:18:14 +08:00
"[[0.0936316 0.2776172 0.16938396]\n",
" [0.21494328 0.26245945 0.22463559]] \n",
2022-11-04 15:33:31 +08:00
"\n",
2022-11-05 15:18:14 +08:00
"[0.36292738 0.51118156 0.35250669] \n",
"\n",
"[[ 0.07101816 0.1111697 -0.89099377]] \n",
2022-11-04 15:33:31 +08:00
"\n"
]
}
],
"source": [
"y1 = np.random.randint(1,size=4)\n",
"print(y1,\"\\n\") #返回[0, 1)之间的整数, 只有0\n",
"y2 = np.random.randint(-2,3,size=(2,3))\n",
"print(y2,\"\\n\") #输出为每个元素在[-2,3)之间的整数, 维度为2× 3的数组\n",
"\n",
"z1 = np.random.random() #生成单个数字\n",
"print(z1,\"\\n\")\n",
"z2 = np.random.random(1) #生成一维的数组\n",
"print(z2,\"\\n\")\n",
"z3 = np.random.random(2) #生成1× 2的数组\n",
"print(z3,\"\\n\")\n",
"z4 = np.random.random((2,3)) #生成一个2行3列的数组\n",
2022-11-05 15:18:14 +08:00
"print(z4,\"\\n\")\n",
"\n",
"z5 = np.random.rand(3) # 生成1× 3的数组\n",
"print(z5,\"\\n\")\n",
"\n",
"z6 = np.random.normal(0,1,(1,3))\n",
"print(z6,\"\\n\")"
2022-11-04 15:33:31 +08:00
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.9.13 ('gym')",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.13"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "eb62451c918ef6a4174992a3510c06ea27ba0bc2fc5ee7a9f470b6f52b0b170f"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}