随机化值考虑浮点分辨率

时间:2015-06-09 16:13:01

标签: python numpy random floating-point

我有一系列值,我剪裁在一定范围内。我不希望大量的值相同,所以我在操作后添加了少量的随机噪音。我认为我需要考虑浮点分辨率才能使其工作。

现在我的代码是这样的:

import numpy as np
np.minimum(x[:,0:3],topRtBk,x[:,0:3])
np.maximum(x[:,0:3],botLftFrnt,x[:,0:3])
np.add(x[:,0:3],np.random.randn(x.shape[0],3).astype(real_t)*5e-5,x[:,0:3])

其中topRtBkbotLftFrnt是3D边界限制(这是球体的另一个版本)。

real_t可配置为np.float32np.float64(代码的其他部分都是GPU加速的,最终也可能这样)。

5e-5是一个神奇的数字,是np.finfo(np.float32).resolution的两倍,也是我问题的症结所在:在这里使用的正确值是什么?

我想在保留足够变化的同时以尽可能小的数量抖动数值 - 并且我承认足够的定义相当不明确。我试图尽量减少重复值,但有些人不会杀了我。

我想我的问题有两个方面:这是正确的使用方法,以及随机数的合理比例因子是什么?

0 个答案:

没有答案