c#来自加权平均值的随机数

时间:2017-05-20 15:57:07

标签: c# random

我想在1-64之间取四个随机整数范围,并在该范围内的某个位置生成一个随机值,但倾向于加权平均值。

实际应用是你拍摄一个像素,抓住4个周围像素并使用这些像素加上当前像素来生成一个值,然后可以将其用作高斯随机数生成器的基本权重。所以你有一个10像素的像素,被8,8,9,9包围。将它们全部加起来,平均为8.8。然后8.8是高斯随机数发生器的权重。所以你在一个范围内有一个随机结果,但接近平均亮度8.8,并且仍然有一些随机元素。

当你因随机噪音而变化很大时会出现问题。

举例说明我希望它如何运作..

输入= [1,16,19,21]

这个平均值是14.25,但由于“1”平均下降,因此运动过多。平均值应该在18左右,因为更多的数字聚集在该区域周围。

我希望看到一个随机结果出现在1到64之间,但是在15到22之间加权很大,它朝向1的可能性较小(因为它仍然在整个范围内)它超过22的可能性要小得多(因为这完全超出了范围)。

附加这样做的目的是生成银河系地图。我已经到了这里,我有一套很好的星系形状数据,给我一张地图上每个扇区的粗糙密度。现在我需要生成特定的数据集并在每个扇区中生成确切的星数。取4个周边行业的平均值,并用它来计算出这个行业应该“密集”的主要目的。我想要避免的主要问题是,与空间区域接壤的区域最终也不会空洞,因为这与星系的一般观测结果不符。

1 个答案:

答案 0 :(得分:1)

你可以想象这四个数字是一条直线上的点,即x轴。在这些点周围有一个半径为64的概率球,概率更集中在点的附近而不是边缘。随机选取四个点中的一个,计算该数字球体内的随机点并取其x坐标。如果超出范围1..64,则重复。

<tr>