如何在X和Y之间生成不均匀分布的随机浮点数,以便更有可能生成X到Y范围内特定范围内的数字?
我确实搜索了很多关键字来查找类似这样的内容,包括:不均匀分布的随机数,不均匀的噪声分布,有偏差的随机浮点数或加权随机数...
我能找到的是从一袋有限的值列表中随机选择,这些值经过加权,以便更有可能选择某些值,但我希望从X和Y之间的无限范围的浮点数中进行选择。
我也找到了很多有关如何不生成有偏随机数的文章,这与我想要的相反。
作为我要处理这些数字的一个示例:如果在白色正方形中绘制黑色噪声,则每个噪声点都位于正方形内的随机位置,如果生成足够的点,您将拥有一个几乎是黑色的正方形。
如果您以较高的概率将随机性分布在正方形的中间,则将在正方形的中间绘制一个几乎柔软的黑点。这就是我要生成的。
所以我的问题是:
提前谢谢!
答案 0 :(得分:1)
这些通常称为连续分布,以下是定义这种分布的两种方法。
std::piecewise_linear_distribution
的形式给出了一种从这种分布中进行抽样的方法示例。另请参见“ Continuous Weighted Choice”。对于许多流行的分布,例如正态分布,β和gamma分布,有一些特殊的方法可以使用这些分布生成随机数。实际上,用于正态分布的这种方法有许多不同的设计。对于有界范围内的数字,beta distribution是理想的选择。它的两个参数( alpha 和 beta )描述了各种各样的形状,可以满足您的目的。 Python有一个random.betavariate(alpha, beta)
方法来生成Beta分布的随机数。