首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >一致地创建相同的随机数组

一致地创建相同的随机数组
EN

Stack Overflow用户
提问于 2011-04-30 03:10:41
回答 5查看 75.7K关注 0票数 96

我正在等待另一个开发人员完成一段代码,该代码将返回一个形状为(100,2000)的np数组,其值为- 1 ,0或1。

同时,我想随机创建一个具有相同特征的数组,这样我就可以在开发和测试中抢先一步。问题是,我希望这个随机创建的数组每次都是相同的,这样我就不会在每次重新运行我的进程时都在测试一个值不断变化的数组。

我可以像这样创建我的数组,但是有没有一种方法可以让它每次都是一样的。我可以对对象进行酸洗和解除酸洗,但我想知道是否有其他方法。

代码语言:javascript
复制
r = np.random.randint(3, size=(100, 2000)) - 1
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-30 03:12:55

只需为随机数生成器设定一个固定值,例如

代码语言:javascript
复制
numpy.random.seed(42)

这样,您将始终得到相同的随机数序列。

此函数将作为全局默认随机数生成器的种子,对numpy.random中函数的任何调用都将使用并更改其状态。这对于许多简单的用例都很好,但它是全局状态的一种形式,具有全局状态带来的所有问题。要获得更干净的解决方案,请参阅下面Robert Kern的答案。

票数 92
EN

Stack Overflow用户

发布于 2011-04-30 04:59:10

使用您选择的种子创建您自己的numpy.random.RandomState()实例。除了在不允许传递自己的RandomState实例的不灵活的库之外,不要使用numpy.random.seed()

代码语言:javascript
复制
[~]
|1> from numpy.random import RandomState

[~]
|2> prng = RandomState(1234567890)

[~]
|3> prng.randint(-1, 2, size=10)
array([ 1,  1, -1,  0,  0, -1,  1,  0, -1, -1])

[~]
|4> prng2 = RandomState(1234567890)

[~]
|5> prng2.randint(-1, 2, size=10)
array([ 1,  1, -1,  0,  0, -1,  1,  0, -1, -1])
票数 201
EN

Stack Overflow用户

发布于 2019-09-19 21:14:12

我只是想澄清一些关于@Robert Kern答案的事情,以防不清楚。即使您确实使用了RandomState,您也必须在每次调用numpy random方法时初始化它,否则您将获得以下结果。

代码语言:javascript
复制
Python 3.6.9 |Anaconda, Inc.| (default, Jul 30 2019, 19:07:31) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> prng = np.random.RandomState(2019)
>>> prng.randint(-1, 2, size=10)
array([-1,  1,  0, -1,  1,  1, -1,  0, -1,  1])
>>> prng.randint(-1, 2, size=10)
array([-1, -1, -1,  0, -1, -1,  1,  0, -1, -1])
>>> prng.randint(-1, 2, size=10)
array([ 0, -1, -1,  0,  1,  1, -1,  1, -1,  1])
>>> prng.randint(-1, 2, size=10)
array([ 1,  1,  0,  0,  0, -1,  1,  1,  0, -1])
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5836335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档