【发布时间】:2012-08-06 02:34:47
【问题描述】:
如何在 numpy 的区间 [a, b] 上对随机浮点数进行采样?不仅仅是整数,而是任何实数。例如,
random_float(5, 10)
将返回[5, 10] 之间的随机数。谢谢。
【问题讨论】:
如何在 numpy 的区间 [a, b] 上对随机浮点数进行采样?不仅仅是整数,而是任何实数。例如,
random_float(5, 10)
将返回[5, 10] 之间的随机数。谢谢。
【问题讨论】:
uniform distribution 可能会满足您的要求。
np.random.uniform(5,10) # A single value
np.random.uniform(5,10,[2,3]) # A 2x3 array
【讨论】:
如果没有 numpy,你可以使用 random 模块来做到这一点。
import random
random.random()*5 + 10
将返回 10-15 范围内的数字,作为函数:
>>> import random
>>> def random_float(low, high):
... return random.random()*(high-low) + low
...
>>> random_float(5,10)
9.3199502283292208
>>> random_float(5,10)
7.8762002129171185
>>> random_float(5,10)
8.0522023132650808
random.random() 返回一个从 0 到 1 的浮点数(不包括上限)。将其乘以一个数字会使其范围更大。 ex random.random()*5 返回从 0 到 5 的数字。向此添加数字提供了一个下限。 random.random()*5 +10 返回从 10 到 15 的数字。我不确定您为什么要使用 numpy 来完成此操作,但也许我误解了您的意图。
【讨论】:
import numpy as np
>>> 5 + np.random.sample(10) * 5
array([ 7.14292096, 6.84837089, 6.38203972, 8.80365208, 9.06627847,
5.69871186, 6.37734538, 9.60618347, 9.34319843, 8.63550653])
【讨论】: