【发布时间】:2018-04-10 13:21:48
【问题描述】:
我有两个变量的两对最小值和最大值。我想从这两个变量的均匀分布中抽取 n 个随机样本,位于它们的最小值和最大值之间。例如:
min_x = 0
max_x = 10
min_y = 0
max_y = 20
假设我抽取了三个样本。这些可能是:
[(4, 15), (8, 9), (0, 19)] # First value is drawn randomly with uniform probability between min_x and max_x, second value is drawn similarly between min_y and max_y
如何使用 numpy 以简单的方式实现这一点?
我想出了这个:
>>> min_x = 0
>>> max_x = 10
>>> min_y = 0
>>> max_y = 20
>>> sample = np.random.random_sample(2)
>>> sample[0] = (sample[0]) * max_x - min_x
>>> sample[1] = (sample[1]) * max_y - min_y
>>> sample
array([ 1.81221794, 18.0091034 ])
但我觉得应该有一个更简单的解决方案。
编辑:不是重复的。建议的重复问题的答案涉及整数。
【问题讨论】:
-
为什么不直接把你写的功能放到一个函数中呢?我认为这种方法没有任何问题。
-
我可以。只是想知道是否有更简单的方法
-
实际上,我会审查您的方法。考虑您的最小值大于
sample包含的值的情况。你最终会得到一个负值...... -
感谢您的提醒。已排序。