关于随机数出现的概率
我的目的是这样的。 有一个方法,返回一个 0-100的数。
数字越小,概率越到, 数字越到出现的概率越难。
如 100个数, 1出现次数最多, 可能99 出现1次甚至0次。
然后是这样的,我先利用logistic 或者 泊松分布 函数,都可以 得出
一个函数,就是 对应数字,的概率, 如 1的概率为 0.98 ,90的概率为 0.02 ,
或者它的 逆推函数 根据 填入概率 得到 该对应数字。
现在问题是,我如何应用到 随机出现这个里面去。
我假设 random 函数 是平均分布,也就是 0-100 每个数出现的概率一样。
那么怎么 使得我 想要得到的 随机数 服从我要的 概率分布呢?
我有个笨方法,就是 把 数字的概率化为频数 存入一个数组。如
{1,1,1,1,2,2,2,3,3,4} 10个数。 1概率最大, 4概率最小。
我通过 得到 一个 rand 随机数 比如 5. 我再用 数组的下标5索引得到 数字 2
但是数量大,这种就感觉效率不高咯。
请问高手们有什么好办法?
------解决方案--------------------int n=(int)(Math.pow(Math.random(), k)*100+1);//k=1时平均分布,k<1时出现大数概率大,k>1时出现小数概率大,
自己调节k