Math.Random
Bu sınıfın açıklamasında [0 - 1.0) arasında sayı üretir yazıyor. Kastedilen şey [0-0.9999999999999) arasında sayı üretir gibi bir cümle. Evet 1.0 hiç bir zaman üretilmez ama bu sayıya çok yakın bir sayı da üretebilir. Dolayısıyla aşağıdaki kod [0-26] arasında bir sonuç döner
Random Sınıfı yazısına taşıdım.
Belli Aralıklarda Int Sayı Üretmek
Java 7'den önce
Temel formül şu
nextInt metoduna geçilen maxValue - minvalue + 1 ile [0,11) arasında sayı üretiriz. Üzerine 10 ekleyince [10,21) arasında sayı üretiriz.
Şöyle yaparız.
Java 7'den sonra
ThreadLocalRandom yazısına taşıdım
Belli Aralıklarda Double Sayı Üretmek
Eksi- Artı Aralığında NextDouble
Eğer istenilen aralık [x,y] eksi sayıdan artı bir sayıya kadarsa nextDouble() veya nextInt() metoduna geçilecek sayı, aralığın 2 katı * [-0.5 - +0.5] arasında sayı üreten üreteç olmalı. [-PI, + PI] arasında sayı üretme örneği:
4 Haneli Sayı 1-6 Rakamlarını Kullanan Sayı Üretmek
Basit bir örnek şöyle. Yukarıdaki aralık formülünün burada da uygulandığı görülebilir.
Java'da dağılım sınıfı yok. Bir tek Gaussian dağılım yapan, nextGaussian() metodu var.
Bu sınıfın açıklamasında [0 - 1.0) arasında sayı üretir yazıyor. Kastedilen şey [0-0.9999999999999) arasında sayı üretir gibi bir cümle. Evet 1.0 hiç bir zaman üretilmez ama bu sayıya çok yakın bir sayı da üretebilir. Dolayısıyla aşağıdaki kod [0-26] arasında bir sonuç döner
System.out.println((int)(Math.random() * 27));
RandomRandom Sınıfı yazısına taşıdım.
Belli Aralıklarda Int Sayı Üretmek
Java 7'den önce
Temel formül şu
minimum + rn.nextInt(maxValue - minvalue + 1)
Formül şöyle çalışıyor. Diyelimki [10 - 20] arasında sayı üretmek istiyoruz.nextInt metoduna geçilen maxValue - minvalue + 1 ile [0,11) arasında sayı üretiriz. Üzerine 10 ekleyince [10,21) arasında sayı üretiriz.
Şöyle yaparız.
public static int randInt(int min, int max) {
Random rand (...); //initialize
int randomNum = rand.nextInt((max - min) + 1) + min;
return randomNum;
}
C#'ta bu işi hazır olarak yapan Next(int minValue,int maxValue) metodu var.Java 7'den sonra
ThreadLocalRandom yazısına taşıdım
Belli Aralıklarda Double Sayı Üretmek
Eksi- Artı Aralığında NextDouble
Eğer istenilen aralık [x,y] eksi sayıdan artı bir sayıya kadarsa nextDouble() veya nextInt() metoduna geçilecek sayı, aralığın 2 katı * [-0.5 - +0.5] arasında sayı üreten üreteç olmalı. [-PI, + PI] arasında sayı üretme örneği:
private static readonly Random rand = new Random();
void DrawRandom()
{
float angle = 2 * Math.PI * (rand.NextDouble() - 0.5);
float x = Math.Sin(angle);
float y = Math.Cos(angle);
// do something
}
Basit bir örnek şöyle. Yukarıdaki aralık formülünün burada da uygulandığı görülebilir.
Random r = new Random();
int number = 0;
int d = 1;
while (number < 1000) {
// generate number between 1-6
int num = r.nextInt(6) + 1;
number += num * d;
// increase the digit (units, tens, hundreds, thousands)
d *= 10;
}
System.out.println(number);
Dağılım SınıfıJava'da dağılım sınıfı yok. Bir tek Gaussian dağılım yapan, nextGaussian() metodu var.
Random rnd = new Random();
double value = rnd.nextGaussian();