gpt4 book ai didi

0和1之间的Java Random.nextGaussian

转载 作者:行者123 更新时间:2023-11-30 08:18:22 25 4
gpt4 key购买 nike

我正在开发一个图像编辑器,我即将实现过滤器。我决定使用某种模糊或噪点。

无论如何,我决定我想要一个统一的过滤器,所以我阅读了 Random.nextGaussian()

但是,由于我使用的是 0 到 255 范围内的 RGB 值。我如何缩放这个随机 double 值以适应 0 到 255 之间的范围?

我相信 nextGaussian() 返回的随机值可以在 -1 到 1 之间。

所以,我想保留随机值之间的相对差异。如果有意义,请“缩放”或“移动数字范围”。

我知道这是可能的,但我想不通。提前致谢。

本质上,我需要它是一个介于 0 和 1 之间的数字。

最佳答案

在这种情况下,您应该使用 nextDouble()

高斯分布是一种分布在整个 double 值集合(从数学上讲,从减去无穷大正无穷),峰值在零附近。因此,高斯分布不均匀

nextDouble() 方法在01 之间统一绘制数字(0 包含,1 不包含)。

因此,您可以使用以下代码在 0255(包括两者)之间随机抽取一个数字:

Random rand = new Random();
int value = (int) math.floor(256.0*rand.nextDouble());

然而,一种更快的算法是屏蔽随机整数 (Random.nextInt):

Random rand = new Random();
int value = rand.nextInt()&0xff;

此算法在大 O 分析中并不快,但它节省了一个更昂贵的 nextDouble 方法调用以及一个浮点乘法和一个浮点到整数的转换。

关于0和1之间的Java Random.nextGaussian,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27604251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com