生成范围内的随机整数的概率分布(Generating random integers within

2019-09-02 05:07发布

我有一个问题,即我要生成使用概率分布1至5(含)之间的一组随机整数的值。

泊松和逆Gamma是两个分布,显示(以平均居多,少较高的数字),我发现我的特点后。

我期待在使用Apache的百科全书数学 ,但我不知道如何生成我使用的发行版中提供想要的数字。

Answer 1:

从您的问题描述,这听起来像你真正想要从一个离散概率分布产生的样本,并可以使用EnumeratedIntegerDistribution用于此目的。 选择您的每个整数,也许像下面这样将满足您的需求的适当概率:

int[] numsToGenerate           = new int[]    { 1,   2,    3,   4,    5   };
double[] discreteProbabilities = new double[] { 0.1, 0.25, 0.3, 0.25, 0.1 };

EnumeratedIntegerDistribution distribution = 
    new EnumeratedIntegerDistribution(numsToGenerate, discreteProbabilities);

int numSamples = 100;
int[] samples = distribution.sample(numSamples);

仅仅调整了discreteProbabilities值,你需要什么。



Answer 2:

我只想产生均匀分布的随机数,然后将它们传递到你想要的分布函数,因此,如果分布函数是X ^ 2

import java.util.ArrayList;

import java.util.Random;



    public class Test{

        public static void main(String args[]){
            Test t=new Test();
        }

        public Test(){

            Random rnd=new Random();

            ArrayList<Double> data=new ArrayList<Double>();

            for(int i=0;i<1000;i++){
                data.add(useFunction(rnd.nextDouble()));
            }

        }

        public double useFunction(double in){
            return in*in;
        }
    }


文章来源: Generating random integers within range with a probability distribution