python - 选择随机种子并保存

标签 python numpy

我想为 numpy.random 选择一个随机种子并将其保存到一个变量中。我可以使用 numpy.random.seed(seed=None) 设置种子,但是如何让 numpy 选择随机种子并告诉你它是什么?

Number 似乎默认在 linux 上使用 /dev/urandom

最佳答案

作为 RandomState 基础的 MT19937 PRNG 的完整状态不能包含在单个(正常大小,例如 32 位或 64 位)整数中。它的状态有一个 624 个 32 位整数数组。使用整数播种实际上会运行一个更小、更简单的 PRNG 来生成这 624 个单词。这只是人类手动将 PRNG 的状态设置为可以持续复制的 状态的一种便捷方式。但大多数指出,进入的 PRNG 无法还原为方便的 32 位整数。该初始化程序 PRNG 不能以这种方式“向后”工作。相反,RandomState 的整个状态包含在该 624 条目数组中。您可以获取此数组并使用 get_state()set_state() 方法对其进行设置。

>>> import numpy as np
>>> prng = np.random.RandomState()
>>> state = prng.get_state()
>>> state
('MT19937',
 array([2310623686,  364919541, 1436109096, 1457837701, 2852017530,  562204638, 1207376362, 2290452263,  250624867, 1687514807, 3242300311,   68301227,
        497650124, 3782308076, 4180165271, 3190969185, 1284472452, 2868357773, 1148940887,  433865334,  643839653, 3091921054, 2157305915, 4079505239,
       1396964105,  221256094, 2789328727, 3216471912, 1782932723, 1704818545, 3880597634, 2060476197, 2599008138, 1389874875,   56765165, 1173841349,
        278528026,  714062321, 3587382791,  840507318, 2086996355, 3416087866, 3081938567,  946222923, 4259369972,  868558506, 2060774692, 3239317074,
       4078800142, 3833877854, 1503749328, 3821805560, 1447854235,  995535877, 3762179650,  185008825,  149218213, 3469766149,  803379340, 3971043961,
       3421104633, 2287066419, 2465098532, 4088166586, 2105722956, 1451099732, 3115885598, 4240224392, 3778829453, 4059831750, 2919989511, 4092928731,
        922778621, 1805422791, 3344418665, 1738799711, 1367565729,   34977430, 4008589298, 2239856842, 1717530303,   32049105, 3468621644, 2269299060,
       1664083607, 3996022881,  377407365, 4070209212, 4216115381, 2124999225, 1920630572, 2011423407, 1367187092, 4158622494,  487432561, 3536187733,
        931951977,  749985693, 2812437433, 3902171864,  767004922, 3807520852,  796884475, 2794577773, 1481140267, 2247603372, 1053872430,  211335743,
       2997489007, 4140013480, 1601875594, 1927437737, 3349007801, 2868575676, 3474179396,  595650352,  517981041, 1947095736,  170970294, 3253183597,
       2873789192, 3386930182, 2047755893,  254974719, 2747566023, 4182212825, 1934990158, 1282861435,  404005052, 3237256048, 1737335951,  386655885,
        640537519,   60176882, 1825713593,   86537970,  252007523, 3674897989, 3645447766,  972417578, 1860821974, 2688102651, 2481103756, 3672142036,
       2961031222, 1709451377,  134371222, 4217784577, 3792528752, 1278543741,  291978547, 1987232116, 2685749450,  948431490, 3550698848, 1384058130,
        302186886, 2966159795, 1981959565, 2602891721, 1814325871, 4148300386, 1211156469, 2945951607, 4132724234, 1221821676, 3057395063, 1563869020,
       3762934166, 3303914085, 1910775932, 2241726842, 3836262483,  905479357, 2974032168, 3187395363, 3071243546, 3571439927, 3756380578,   53494506,
        495375628, 2149633842, 1549467921,  403773184, 3774309942, 1767528278,  421982610,  579688614, 3735062896, 2128447283, 2545877077, 3013437905,
       4067651631,   26043227, 3189924699, 1882256309,  431961449, 3637287121, 1409924095, 3834921204, 3796550515,  338734970, 1632375419, 3788135288,
        153287562, 2302436235, 3852961194, 2073555800, 3034065218, 1997718747, 3343015031, 3198064720, 4286393046, 3338997777, 1383744819, 1553624825,
       1183357509, 1141531260,   25823987, 2951322047, 4066666075, 3687780778, 3680053857,  478734258, 3674686218, 1457141125, 3673486342, 3224971043,
       2786082270, 2282591016, 1210618789, 3735610308,  587294285, 4231880327, 3702701983,   13470000,   90747549,  876795924, 1489448380,  585176585,
       2398768918, 3069244786, 2901497718, 4004899727, 1992450245, 1127097566,  713011674, 2083831719, 2923291311,  315998911, 1511233310, 1515243002,
        621858088, 2398475656, 3029652473, 1011396654, 1854317252, 2735915680, 1489448619, 3836317799, 1678027486, 2429831383,  170989290,  651235170,
       1457126476, 3694269669, 4248613755, 3161380741, 3396304589,   26218095, 4262314194, 3090365505, 2603976562, 1742639443, 3357356842, 2527908520,
       2744118109,  764708873,  608716002,  218517036, 2028062957,  123264851, 3930797933, 1358280349, 3770182726, 1475205800, 4083653367,  728440387,
        578359463, 3792859449, 2660424205,  866268419, 2680711984, 1892477918, 3473675890,    5948212,  590585309, 1434154869, 4019090587, 3447601971,
       3777365598,  502271900,  933280098,  551410763, 4178545332, 2426657681,  435161245,  103552671, 2751130089, 1664159723, 2124278140, 3518289293,
       1397473574, 4032873848, 3104766011, 3780526375,  146118438, 3497842141, 2078614647, 1431064844,  825222639,  954382890, 3170571595, 1418867403,
       4133763948, 2773874577,  459104952, 3336058631,  791669682,   79496438, 1268256964, 1327605157, 3196785479, 3094404795, 3971934915,  967528556,
       1680157581, 1508139540, 3821158380, 3603819236,  593155253, 1875654417, 3734837198, 3315972391, 2450938455, 1863178045,  619766009, 1376779265,
        843230528, 1818810226, 1508689309, 1353144904, 3459699509,  734863896, 1593154156, 4178196553,  559982910, 1937392142, 3328058492, 2417976146,
       3197182411, 2233439700,  196920494, 3714701774, 4104568606,  850977604,  382851029, 4143478133, 3024891142, 2455897904,   28681198, 3438784382,
        578301023, 2215641381,   59642080, 2913625733, 2063824530, 2113835214,  563503294, 2261300428, 1156324177, 3080988993, 1485826140,  291045970,
       3740234437, 2802003429,  804278225, 1715783317, 3683156408, 2855890524, 2390104305,  172369852, 3358371994, 1184782876, 2087670358,  840924195,
       2727925375, 1806621317, 2785628046, 4163132724, 3580142689, 1107366902,  809125531, 3131770778, 1922818283,  888842000, 2875999147, 2752567229,
        170460348, 1952532683, 1705378473, 1784443344, 1111435234, 2373828316, 1440965774, 3986117425,  849160375, 1233392480, 4073490673, 3948548975,
       2317742686,  459747729, 3981827733,   97170450, 1906613346, 2296986726, 3107045483, 3301310854, 2005065797, 1047441812, 1340913878, 1305190832,
       3414530672, 2739562683,  670592573, 3517927973, 3902124497, 4085960935,  823980090,  982263838, 1807290575, 1182843877, 3543714667, 1403590968,
        329717243, 1055811172, 3550329386, 3998515559, 3251582755, 2201054306, 3347834116, 1211790680,   62972368,   88227180, 2967020240, 1937245345,
        524567284, 2915223835, 1039263578,  931149438, 2102426452, 4178383760, 2534760455, 3961494901,  359726861, 2377704223, 3980574430, 3941075859,
       3025460765, 1087397787, 1520908724, 3979084899, 3800423495,  139799221,  644687977, 1080267251,  599331265,  379370383, 3716980301, 2450151406,
       1223752702,  300351842,  295249068, 1870733374, 2986315084, 1323736886,  306347366, 2697516131, 3896227616, 2556699990,  578928278, 2356101730,
        171880210,  722319049,  740054230, 3855145369, 1468149367,  311954206, 4099077708, 2941657479,  119786529, 3197372768, 2115311247, 2469241538,
       2636086203, 2206369175,  374899905, 3730393440, 2288141890,  719446033, 4096038147, 4294410470,   19272682, 1964868281, 3192582061, 3934009074,
       1135732985,  682697379, 3290113635, 1489105351,  347638343,  147496092, 4175447059,  341595821, 3117140389, 1003085251, 1889252416,  913732530,
       3459561042, 3662473182, 3839509269, 1519115576,     677113,  597583022, 3031451769,  607339281,   55523370, 2676982537, 1238056185, 1550912054,
       3112284354, 1345961520, 1541909925, 3726796822, 2696250478, 3254836471, 1362613883, 3129122359, 1550126204,  129690651, 2386622242,  407302605,
       1753882614, 2376840660, 1076064874, 2449053256, 3162294193, 3779999195, 3925427556, 2601606505, 1901788890, 2217639773,  406665902, 3640687773,
       2061876750,  968895635,  587973195, 2778479214,  668417883, 2226398520, 1464491431, 2792659882, 3481258691, 2339776369, 2747947338, 3000199533,
       3712567952,  376206272, 2149616269,  985682501,  865295391, 1812641626,  567425379, 1468520640, 2273677177, 2267568076, 3898328230,  898149034,
       3750298043,  394538907, 4101461357, 2781824777, 2719406676, 3415420393,  122661889, 1452536307, 1463257506, 2874481787, 2250093815, 1439068642,
        597070280, 1439076517, 4207797347, 2579732532, 3704826787, 3847236064, 4155289003,  990963026, 2602619627,  701644802, 3629646548, 1110000288,
       3609356614, 2748019645,  638526248, 3265491895, 2839687161,  913026615, 2748040592,  975131382,   83378202, 4236013846,  764917668, 1887262417], dtype=uint32),
 624,
 0,
 0.0)
>>> prng.random_sample()
0.20598058788141316
>>> prng.random_sample()
0.6864005375257146
>>> prng.random_sample()
0.08407651896523582
>>> prng.set_state(state)
>>> prng.random_sample()
0.20598058788141316
>>> prng.random_sample()
0.6864005375257146

您还可以 pickle RandomState 对象。我们使用 get_state() 数据实现了这一点,因此它将可靠地再现 PRNG 的状态。取决于你到底想做什么(你不说),这通常是最方便的事情,而不是用 get_state()set_state() 手动。

>>> import cPickle
>>> pickled = cPickle.dumps(prng)
>>> prng.random_sample()
0.08407651896523582
>>> prng.random_sample()
0.3501860271954601
>>> prng2 = cPickle.loads(pickled)
>>> prng2.random_sample()
0.08407651896523582
>>> prng2.random_sample()
0.3501860271954601

关于python - 选择随机种子并保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20911147/

相关文章:

python - 使用 python 在现有 yaml 文件中添加变量值

python - Django - 从 csv 输出的外键关系获取条目

python - 从 numpy bool 网格获取多边形的外部坐标

python - 如何获取两个浮点值之间的所有整数?

python - 没有for循环的等距元素的矩阵计算

numpy - 对非常大的一维数组进行排序

python - 当特别要求不要时,假设策略会生成 inf

python - 'Guess my number' 游戏类型转换错误

python - 由原始 numpy.array 的 numpy.repeat() View 创建的元素还是唯一元素?

python - 绘制数组中的每个第 n 个元素