0

いくつかのランダムな double を生成して ArrayList に追加したいのですが、nextDouble() 関数は新しい double ではなく、毎回一意の double を返すようです

Random r = new Random();
ArrayList<Pair> centers = new ArrayList<Pair>();  
ArrayList<ArrayList<Pair>> classes = new ArrayList<ArrayList<Pair>>();  
for (int i=0 ; i < 100; i++) {
    // Random r = new Random ();
    // System.out.println (r.nextDouble ()) ;
    double a = r.nextDouble () * 10;
    double b = r.nextDouble () * 10;
    centers.add (new Pair (a, b ));
    System.out.println (centers);
}               

誰でもこれで私を助けることができますか?これは最適化の間違いですか?

4

1 に答える 1

4

私はこのコードを実行しました:

public static void main(String[] args) {
  Random r = new Random();
  ArrayList<Pair> centers = new ArrayList<Pair>();
  for(int i = 0; i < 100; i++ ) {
    double a = r.nextDouble() * 10;
    double b = r.nextDouble() * 10;
    centers.add( new Pair(a, b) );
  }
  System.out.println(centers);
}

これは出力でした:

[(8.08, 8.06), (9.97, 1.83), (3.83, 3.19), (2.97, 2.51), (9.40, 2.88), (7.78, 2.59), (1.67, 9.07) ...

それはあなたが望むものではありませんか?参考までに、これはPair私が使用したクラスです:

class Pair {
  private final double a, b;
  Pair(double a, double b) { this.a = a; this.b = b; }
  @Override public String toString() { return String.format("(%.2f, %.2f)", a, b); }
}
于 2012-05-14T12:22:27.763 に答える