我正在使用随stl c ++提供的随机数生成器。我们如何偏置它以使它产生较小的随机数,其概率大于较大的随机数。
答案 0 :(得分:6)
嗯,在这种情况下,你可能想要一定的概率分布。您可以从统一的随机数生成器生成任何分布,问题只是它应该是什么样子。 Rejection sampling是生成难以描述的分布的常用方法,但在您的情况下,更简单的可能就足够了。
您可以查看this article的许多常见分发函数。 Chi,Chi-Square和Exponential看起来很不错。
答案 1 :(得分:6)
一种简单的方法是获取范围[0,1)中生成的每个随机数,并将其提高到大于1的任何幂,具体取决于您希望结果的偏差
答案 2 :(得分:0)
使用std::discrete_distribution
计算具有偏斜概率分布的随机数。见这里的例子:
http://www.cplusplus.com/reference/random/discrete_distribution/