SORU
30 Mart 2010, Salı


Java: 0 < rasgele sayı;= x &; n yelpazesi lt

Random sınıfı, belirli bir aralıkta rastgele int oluşturmak için bir yöntemi vardır. Örneğin:

Random r = new Random(); 
int x = r.nextInt(100);

Bu bir int sayı daha fazla veya 0'a eşit ve 100'den daha az üretecek. Uzun bir sayı ile tam olarak aynı şeyi yapmak istiyorum.

long y = magicRandomLongGenerator(100);

Random sınıfı sadece nextLong var () ama aralığı ayarlamak için izin vermez.

CEVAP
30 Mart 2010, Salı


http://java.sun.com/j2se/1.5.0/docs/api/java/util/Random.html göre nextİnt olarak uygulanır

 public int nextInt(int n) {
     if (n<=0)
                throw new IllegalArgumentException("n must be positive");

     if ((n & -n) == n)  // i.e., n is a power of 2
         return (int)((n * (long)next(31)) >> 31);

     int bits, val;
     do {
         bits = next(31);
         val = bits % n;
     } while(bits - val   (n-1) < 0);
     return val;
 }

Bu nextLong gerçekleştirmek için değiştirebiliriz:

long nextLong(Random rng, long n) {
   // error checking and 2^x checking removed for simplicity.
   long bits, val;
   do {
      bits = (rng.nextLong() << 1) >>> 1;
      val = bits % n;
   } while (bits-val (n-1) < 0L);
   return val;
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • colacas

    colacas

    29 EKİM 2006
  • MrDevin521

    MrDevin521

    18 Temmuz 2010
  • The Scary Snowman

    The Scary Sn

    1 ŞUBAT 2011