我有一個問題,我想用一個概率分佈生成一組介於1和5之間的隨機整數值。用概率分佈生成範圍內的隨機整數
泊松和逆伽瑪是兩個分佈,顯示我發現後我的特點(大部分在平均值,較低的數字)。
我在尋找使用Apache Commons Math,但我不知道如何使用可用的分佈生成我想要的數字。
我有一個問題,我想用一個概率分佈生成一組介於1和5之間的隨機整數值。用概率分佈生成範圍內的隨機整數
泊松和逆伽瑪是兩個分佈,顯示我發現後我的特點(大部分在平均值,較低的數字)。
我在尋找使用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
值。
是否還有EnumeratedDistribution for Objects? – testiguy 2015-06-25 11:57:33
我只想產生均勻分佈的隨機數,然後將它們傳遞到你想要的分佈函數,因此,如果分佈函數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;
}
}
這就是說如果theres Apache中的內置函數將更容易 – 2013-05-08 08:14:38
那麼,這裏有一個出發點:http://commons.apache.org/proper/commons-math/javadocs/api-3.2/org/apache/commons/math3/distribution/PoissonDistribution.html – Yuushi 2013-05-08 08:13:11