开发者

how to bias a random number generator

i am usin开发者_如何学运维g the random number generator provided with stl c++. how do we bias it so that it produces smaller random numbers with a greater probability than larger random numbers.


One simple way would be to take every random number generated in the range [0,1) and raise it to any power greater than 1, depending how skewed you want the results


Well, in this case you probably would like a certain probability distribution. You can generate any distribution from a uniform random number generator, the question is only how it should look like. Rejection sampling is a common way of generating distributions that are hard to describe otherwise, but in your case something simpler might suffice.

You can take a look at this article for many common distribution functions. Chi, Chi-Square and Exponential look like good candidates.


Use std::discrete_distribution to calculate random numbers with a skewed probability distribution. See example here: http://www.cplusplus.com/reference/random/discrete_distribution/

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜