0
ExponentialDistribution exp = new ExponentialDistribution(4.0);
        for(int i = 1; i < 20; i++){
            timestamp[i] = (int)exp.sample() + 1+timestamp[i-1];

ここで、timestamp は整数の配列であり、上記の条件でランダムな値が割り当てられます。(int)exp.sample() は何をし、どのようにランダムな値を i に割り当てますか?

4

2 に答える 2

0

ExponentialDistribution API から: http://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/distribution/ExponentialDistribution.html#sample()

パブリックダブルサンプル()

この分布からサンプリングされたランダム値を生成します。デフォルトの実装では反転方式が使用されます。

アルゴリズムの説明: この実装では、反転法を使用して、一様偏差から指数分布のランダム値を生成します。

したがって、 が表示(int)exp.sample()されている場合は、選択したこのランダムな値に変換しています。exp はExponentialDistribution(4.0)作成した のインスタンスなので、 exp.sample() はExponentialDistributionsample()メソッドを呼び出します。

では、(int).

別のオブジェクト/プリミティブの前にオブジェクト型またはプリミティブ型を括弧内に配置すること (この場合(int)は ) は、「キャスト」と呼ばれます。Java での変数のキャスト

ほとんどの場合、sample()は a を返しますがdouble、をtimestamp格納intsするので、それらの型の 1 つを切り替える必要があります (それらは一致する必要があります) exp.sample()

つまり、全体として、これは「オブジェクトを取得し、そのexpメソッドを呼び出してからsample()、それをに変換するint」と言っています。

于 2016-08-16T18:45:07.217 に答える
0

クラス ExponentialDistribution は、 Exponential Distributionに従って疑似乱数を生成します。真にランダムではないため、疑似です。方程式を使用して、取得するすべての乱数を生成します。

メソッド exp.sample() は、シーケンス内の次の乱数を返します。(int) を使用すると、その整数部分だけが得られます。

于 2016-08-17T09:21:13.890 に答える