SORU
29 Aralık 2009, Salı


Java: bir numaralama rastgele bir değer Almak mı?

Eğer böyle bir sıralama yaparsam:

public enum Letter {
    A,
    B,
    C,
    //...
}

Rastgele bir seçim için en iyi yolu nedir? Üretim kaliteli kurşun geçirmez olması şart değil, ama oldukça eşit dağılım güzel olurdu.

Böyle bir şey yapabilirim

private Letter randomLetter() {
    int pick = new Random().nextInt(Letter.values().length);
    return Letter.values()[pick];
}

Ama orada daha iyi bir yolu var mı? Bunu daha önce çözülmüş bir şey olduğunu hissediyorum.

CEVAP
29 Aralık 2009, Salı


I-cekti önermek tek şey her kopya bir dizi diyoruz çünkü values() sonucu önbelleğe alma. Ayrıca, Random her zaman oluşturmak yok. Bir tane olsun. Ne yaptığını gayet iyi bunun dışında. Yani:

public enum Letter {
  A,
  B,
  C,
  //...

  private static final List<Letter> VALUES =
    Collections.unmodifiableList(Arrays.asList(values()));
  private static final int SIZE = VALUES.size();
  private static final Random RANDOM = new Random();

  public static Letter randomLetter()  {
    return VALUES.get(RANDOM.nextInt(SIZE));
  }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GamingAndTech

    GamingAndTec

    16 NİSAN 2013
  • InsideBlackBerry

    InsideBlackB

    14 Aralık 2009
  • LevelUpTuts

    LevelUpTuts

    20 Ocak 2012