2014-02-27 197 views
22

这可能是一个愚蠢的问题,但我一直没能找到一个函数来生成一定范围内的给定长度的随机浮点数组。生成一个范围之间的随机浮点阵列

我看过Random sampling但没有功能似乎做我所需要的。

random.uniform接近,但它只返回一个单一的元素,而不是一个特定的数字。

这就是我所追求的:

ran_floats = some_function(low=0.5, high=13.3, size=50) 

这将返回50随机非唯一的浮标阵列(即:重复允许)均匀分布在范围[0.5, 13.3]

有没有这样的功能?

+5

,但是你没有提到'numpy.random .uniform“,尽管它具有您想要的呼叫签名。你有'numpy'库吗? – DSM

+0

'[random.uniform(low,high)for xrange(size)]' – Phylogenesis

+1

@DSM是的,我有,你显然是100%正确的。我错过了这个功能,它似乎正是我所需要的。你介意提出你的评论作为答案吗? – Gabriel

回答

8

为什么不使用列表理解?

ran_floats = [random.uniform(low,high) for _ in xrange(size)] 
3

为什么不把random.uniform与列表理解相结合?

>>> def random_floats(low, high, size): 
... return [random.uniform(low, high) for _ in xrange(size)] 
... 
>>> random_floats(0.5, 2.8, 5) 
[2.366910411506704, 1.878800401620107, 1.0145196974227986, 2.332600336488709, 1.945869474662082] 
2

可能已经有一个函数来做你要找的东西,但我不知道它(但?)。 在此期间,我会suggess使用:

ran_floats = numpy.random.rand(50) * (13.3-0.5) + 0.5 

这将产生形状与0.5和13.3之间的均匀分布的阵列(50)。

你也可以定义一个函数:

def random_uniform_range(shape=[1,],low=0,high=1): 
    """ 
    Random uniform range 

    Produces a random uniform distribution of specified shape, with arbitrary max and 
    min values. Default shape is [1], and default range is [0,1]. 
    """ 
    return numpy.random.rand(shape) * (high - min) + min 

编辑:嗯,是啊,所以我错过了,有numpy.random.uniform()你想要完全相同的来电! 尝试import numpy; help(numpy.random.uniform)了解更多信息。

1

这是你加了标签的问题`numpy`最简单的方法

np.random.uniform(start,stop,(rows,columns)) 
相关问题