Java’da Random Sınıfı Kullanımı

Ferhat Sercan
Yetkin Yayın
Published in
4 min readFeb 10, 2024

Merhaba, bu yazıda sizlerle birlikte Java’da Random sınıfının kullanımını işleyeceğiz.

Random ve Random sınıfı nedir?

Random ingilizce bir kelime olup türkçesi rastgele demektir. Random sınıfı ise bizlere rastgele sayılar üreten sınıftır.

Nasıl kullanılır?

İlk olarak main metodumuza gelelim ve şu kodu yazalım:

Random rSayi = new Random();

Bunu yazdıktan sonra kodların en üst kısmında sınıfınıza bir paketin dahil edildiğini göreceksiniz (import java.util.Random;). Bu paket random sınıf paketidir. Bu kodda biz rSayi isminde random sınıfından bir nesne oluşturduk. Şimdi ise bu nesneyi kullanmaya geçelim:

public static void main(String[] args) {
int sayi = rSayi.nextInt();
System.out.println(sayi);
}

Bu kodda biz “sayi” isminde int bir değişken oluşturduk ve bu değişkene random sınıfından ürettiğimiz rastgele bir sayıyı atadık. Ancak burada şöyle bir durum var ki biz şu an int veri tipinin kapsadığı sayı aralığında bir değer üretiyoruz. Kodu çalıştırdığımızda ekrana şu tarz değerler gelmesi muhtemel:

1184376274
-1268182673
1649051043
-1073418576

Zira dediğimiz gibi biz şu an int veri tipinin aralığı arasında değer üretiyoruz. Takdir edersiniz ki bu kullanım neredeyse hiçbir proje için uygun değil ve kullanımı çok az. Şimdi size nasıl değer aralığı belirleyeceksiniz onu anlatacağım. İlk olarak kodumuzu yazalım:

public static void main(String[] args) {
int sayi = rSayi.nextInt(5);
System.out.println(sayi);
}

Burada ise parantez içine bir sayı yazdık. Bu sayının anlamı benim sayı aralığım 0'dan (başlangıç değeri 0 olarak otomatik atanıyor) 5'e kadar olsun (0 dahil 5 HARİÇ) dedik. Çıktımızın şu şekilde olması muhtemel:

2
1
4
1

Bu kısmı daha iyi anlamamız için biraz matematiğe değineceğiz.

Biz rSayi.nextInt() fonksiyonunu kullanıp içine değer yazdığımızda program temel de şunu algılıyor:

nextInt’in içine değer girilirse otomatik sayı üretme aralığım “0 ≤ x < girilen_deger” olacak. Yani bizim girdiğimiz değer bu eşitsizlikte yerine konulup ona göre sayı üretiliyor. Umarım açıklayıcı olmuştur. Şimdi kodumuza geri dönelim.

Yukarıda içine 5 yazdığımız kodda dilerseniz siz farklı tavan sayıları vererek de bunu test edebilirsiniz.

Şimdi de tavan sayısıyla birlikte taban sayısını da değiştirmeyi öğrenelim. İlk önce kodumuzu yazalım:

public static void main(String[] args) {
int sayi = rSayi.nextInt(5) + 4;
System.out.println(sayi);
}

Sizden yukarıda yaptığım matematiksel açıklamayı hatırlamanızı isteyeceğim. Oradaki bilgileri baz aldığımızda bu kod bloğunun sayı aralığı 4 ≤ sayi < 9 olacak. Anlaşılır olması adına baştan düşünelim. Şimdi biz nextInt() fonksiyonunun içine değer girdiğimizde programın algıladığı eşitsizlik 0 =< x < girilen_deger değil miydi? Tamam. Yani burada başta 5 girerek ilk önce eşitsizliğimizi 5 ile çarptık. Çarpımdan sonra eşitsizliğimiz 0 ≤ x < 5 oldu. Ardından buna 4 ekledik ( + 4). Eşitsizliğimizin son hali 4 ≤ x < 9 oldu. Yani program bize 4 ile (4 dahil) 9 (9 hariç) arasında sayılar üretmiş olacak.

Bu kısmı daha iyi anlamınız için tavsiyem sizler de farklı sayılar vererek konuyu pekiştirmeye çalışmanız.

Math.random Fonksiyonunu Kullanarak Random Sayı Üretme

Bu fonksiyon ile başta anlattığımız nextInt fonksiyonu arasında ne fark var derseniz, temelde 2 fark var:

  • Burada bir random nesnesi (yukarıda rSayi ismiyle oluşturduğumuz) oluşturmak zorunda değiliz.
  • nextInt() yazdığımızda bize int veri tipinin sayı aralığında rastgele bir değer üretirken, Math.random() yazdığımızda 0 ≤ x < 1 aralığında değer üretir. Ayrıca Math.random() fonksiyonu parametre almaz (yani parantez içi boş bırakılır.)

Bir örnek:

public static void main(String[] args) {
double rSayi = Math.random();
System.out.println(rSayi);
}

Bu kodda Math.random fonksiyonuyla bir değer ürettik. Burada değinmem gereken bir nokta var. Math.random() fonksiyonunun parametresiz yazıldığında 0 ≤ x < 1 arasında değer ürettiğini söylemiştik. Biz burada eğer double rSayi yerine int rSayi deseydik hata alırdık. Zira 0 ≤ x < 1 aralığında int (tam sayı) bir değer yok. O yüzden double yazdık. Devam edelim.

Bu kodun sonucunda ekrana gelmesi muhtemel çıktılar şunlar olacaktır:

0.050353670060637734
0.2218381857825531
0.9948066558009849
0.7103289899537293

Şimdi ise tavanı belli random sayılar üretelim. Bunun için şu kod bloğunu yazalım:

public static void main(String[] args) {
int rSayi = (int) (Math.random()*6);
System.out.println(rSayi);
}

Burada ise Math.random fonksiyonunu 6 ile çarptık (0 ≤ x < 1 eşitsizliğini 6 ile çarpmak yani) ve değeri int tipine döndürerek int tipinde rSayi isimli değişkene aktardık. Burada int yazmamızın sebebi sonucu tam sayı almak istememiz. Bunun sonucunda ise ekranda çıkacak muhtemel sonuçlar şunlar olacaktır:

2
2
5
4

Şimdi de hem tabanı hem tavanı belirli olan random sayı üretme olayını yapalım:

public static void main(String[] args) {
int rSayi = (int) (Math.random()*6 + 4);
System.out.println(rSayi);
}

Burada ise 6 ile çarptığımız eşitsizliğimize 4 ekledik ve çıkan eşitsizlik aralığından (4 ≤ x < 10) rastgele sayı ürettik. Ekranda çıkması muhtemel sonuçlar:

6
8
7
5

İster nesne kullanarak nesne_ismi.nextInt() deyip rastgele sayı üretin ister Math.random() deyip rastgele sayı üretin. Farklarını ve kullanım şekillerinii gösterdim. Hangisi size daha rahat geliyorsa.

Okuduğunuz için teşekkür ederim. Beni sosyal medya üzerinden takip etmek ve benimle iletişime geçmek için bana Instagram ve Linkedin üzerinden ulaşabilirsiniz.

--

--

Ferhat Sercan
Yetkin Yayın

Bildiklerimi, yaşadıklarımı ve öğrendiklerimi paylaşıyorum. Hepsi bu. Neverfap Akademi Ex-Team Lead YetGen23'2 Bilgisayar Programcısı