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

jmc*_*jmc 6 java random probability poisson apache-commons-math

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

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

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

iai*_*gin 11

从您的问题描述中,听起来您实际上想要从离散概率分布生成样本,并且您可以将其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);
Run Code Online (Sandbox Code Playgroud)

只需将discreteProbabilities值调整为您需要的任何值.