0

各反復でテストを行わずに、0 から 1 の間で順序付けられたランダムな値を生成するにはどうすればよいですか?if

0.01
0.12
0.2
0.33
...
4

4 に答える 4

3

TreeSetを使用できます

要素の全順序付けをさらに提供するセット。要素は、自然順序付けを使用して、または通常はソートされたセットの作成時に提供されるコンパレーターによって順序付けられます。セットのイテレータは、要素の昇順でセットをトラバースします

例えば

public static void main(String[] args) {
    SortedSet<Float> randoms = new TreeSet<Float>();
    Random random = new Random();
    while(randoms.size() < 5) {
        randoms.add(random.nextFloat());
    }
    for(Float r: randoms) {
        System.out.println(r);
    }
}

出力

0.017743647
0.1998645
0.37926406
0.39519936
0.7745726

編集:次の乱数が前の番号に依存する順序で乱数を生成する場合、それは乱数ではないと思います。

于 2012-05-07T09:12:50.473 に答える
2

次のコードは、次の各数値が前の数値よりも大きくなることを保証します。しかも数はランダム。それはあなたにとって良いですか?

Random r = new Random();
double[] results = new double[n];
double prev = 0;
for (int i = 0;  i < n;  i++) {
    double next = prev + r.nextDouble();
    results[i] = next;
    prev = next;
}

不利な点は、数値が事前定義されたしきい値によって制限されないことです。これが必要な場合は、数値の配列を生成し、それを使用して並べ替えることをお勧めしますArrays.sort()(他の多くの人が推奨するように)。

于 2012-05-07T09:15:33.540 に答える
2

あなたが望むものに依存します:

a) n個の乱数を作って並べ替える

b) 次の乱数に乱数を作成させるには、(1-最後の数字) を掛けて、最後の数字を加算します。

結果の分布は非常に異なることに注意してください

于 2012-05-07T09:09:38.183 に答える
1

並べ替えが並べ替えを意味すると仮定すると、一連の乱数を作成し、それらをコレクションに追加してから並べ替えることができます。

于 2012-05-07T09:10:22.230 に答える