使用概率分布生成范围内的随机整数

我有一个问题,我想使用概率分布生成1到5之间的一组随机整数值。

Poisson和Inverse Gamma是两个分布,显示了我所发现的特征(多数均值,更低的数字)。

我正在寻找使用Apache Commons Math,但我不知道如何使用可用的发行版生成我想要的数字。

从您的问题描述中,听起来您实际上想要从离散概率分布生成样本,并且您可以使用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值调整为您需要的值即可。

我只会产生均匀分布的随机数,然后将它们传递给你想要的分布函数,所以如果分布函数是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 data=new ArrayList(); for(int i=0;i<1000;i++){ data.add(useFunction(rnd.nextDouble())); } } public double useFunction(double in){ return in*in; } }