怎样才能得到一个范围内的随机数,[0, 100]
使值大多靠近范围的中心?
也就是说,[40, 60]
应该比其他值更频繁地获取范围中的值。
我在这个范围内得到一个均匀分布的数字,如下所示:
Math.random() * 100
怎样才能得到一个范围内的随机数,[0, 100]
使值大多靠近范围的中心?
也就是说,[40, 60]
应该比其他值更频繁地获取范围中的值。
我在这个范围内得到一个均匀分布的数字,如下所示:
Math.random() * 100
最简单的方法是在范围内生成两个数字
[0, 50]
并将它们相加这将给出一个数字分布,在中心获得一个数字的概率最大,并且从中心到边缘的概率逐渐减小。
通过增加随机数的数量并减少它们的生成范围(分别从两个随机数和一个范围
[0, 50]
到n
随机数和一个范围[0, 100/n]
),与靠近边缘的数字相比,可以进一步增加靠近中心的数字的概率:不同 的结果数字的分布图
n
:一般情况
[0, 1]
我们假设分布是使用分布函数给出的。
然后你可以使用分位数函数,它是分布函数的倒数。即需要在区间上生成一个随机数
[0, 1]
并对其应用分位数函数,您将得到一个与现有分布函数对应的随机数。虽然代码很简单,但是用这种方式生成一些常见的分布(比如normal)并不容易,因为很难找到分位数函数。