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ş:
Belirli bir aralıktaki Javascript üret...
Objective-C Rasgele Sayı üretme...
Nasıl C rasgele tamsayı sayı üretmek m...
Başlatılmamış yerel değişken hızlı ras...
Neden MongoDB Java driver rastgele bir...