logo

Java'da Rastgele Sayılar Oluşturma

Rastgele sayılar simülasyonlar, oyun güvenliği vb. için programlamada yaygın olarak kullanılır. Java'daki yerleşik yöntemleri ve sınıfları kullanarak rastgele sayılar üretmenin birden fazla yolu vardır. En sık kullanılan yaklaşımlar aşağıda listelenmiştir:

  • java.util.Random sınıfı
  • Math.random() yöntemi (çift değer döndürür)
  • ThreadLocalRandom sınıfı (Java 7'de tanıtıldı)

Bu yaklaşımların her birini tek tek ayrıntılı olarak inceleyelim

1. Java.util.Random'u kullanma

Bu sınıfın yardımıyla farklı türlerde rastgele sayılar üretebiliriz (int double long boolean vb.).



Anahtar Yöntemler:

  • nextInt(): Bu yöntem rastgele bir tamsayı üretir (negatifler dahil tam aralık)
  • nextInt(int bağlı): Bu yöntem, 0 (dahil) ile sınır (hariç) arasında rastgele bir tamsayı üretir
  • nextDouble(): Bu yöntem, 0,0 (dahil) ile 1,0 (hariç) arasında rastgele bir çift üretir.
  • nextBoolean(): Rastgele doğru veya yanlış

Örnek :

Java
// Generating random number using java.util.Random; import java.util.Random; public class Geeks{    public static void main(String[] args) {    // Creating the instance of Random class  Random r= new Random();  // Generate random integers in range 0 to 999  int r1 = r.nextInt(1000);  int r2 = r.nextInt(1000);  // Printing random integers  System.out.println('Random Integers: ' + r1);  System.out.println('Random Integers: ' + r2);  // Generate random doubles  double rd1 = r.nextDouble();  double rd2 = r.nextDouble();  // Printing random doubles  System.out.println('Random Doubles: ' + rd1);  System.out.println('Random Doubles: ' + rd2);  } } 

Çıkış
Random Integers: 39 Random Integers: 190 Random Doubles: 0.4200728082969115 Random Doubles: 0.9327571841228275 

Belirli Bir Aralıkta Sayı Oluşturma

Belirli bir aralığa sahip rastgele bir sayı üretme formülü aşağıda listelenmiştir:

Rastgele Rand = new Rastgele();

int randomNum = rand.nextInt(max - min + 1) + min;

Not: min ve max sayının alt ve üst sınırıdır.

Örnek:

Java
// Generating random number in a specific range  import java.io.*; import java.util.*; class Geeks {    public static void main (String[] args) {  Random r = new Random();  int max=100min=50;  System.out.println('Generated numbers are within '+ min +' to '+ max);  System.out.println(r.nextInt(max - min + 1) + min);  System.out.println(r.nextInt(max - min + 1) + min);  System.out.println(r.nextInt(max - min + 1) + min);  } } 

Çıkış
Generated numbers are within 50 to 100 55 51 51 


2. Math.random()'u kullanma

Matematik dersi Üslü logaritmaların hesaplanması vb. gibi çeşitli sayısal işlemleri gerçekleştirmek için çeşitli yöntemler içerir. Bu yöntemlerden biri rastgele() bu yöntem, pozitif işaretli 0,0'dan büyük veya eşit ve 1,0'dan küçük bir çift değer döndürür. Döndürülen değerler sözde rastgele seçilir. Bu yöntem yalnızca Double türünde rastgele sayılar üretebilir.

Örnek:

Java
// Java program to demonstrate working of  // Math.random() to generate random numbers import java.util.*;   public class Geeks {  public static void main(String args[])  {  // Generating random doubles  System.out.println('Random doubles: ' + Math.random());  System.out.println('Random doubles: ' + Math.random());  } } 

Çıkış
Random doubles: 0.38601320746656065 Random doubles: 0.9209882942481417 

Belirli Bir Aralıkta Sayı Oluşturma

Minimum ve maksimumun alt ve üst sayı sınırımız olduğu belirli bir aralıkta rastgele bir sayı oluşturma formülü:

int randomNum = min + (int)(Math.random() * ((max - min) + 1));

Örnek:

Java
// Demonstrating how to generate random  // number within a specific range import java.io.*; import java.util.*; class Geeks {    public static void main (String[] args) {  int max=100min=50;  System.out.println('Generated numbers are within '+min+' to '+max);  System.out.println(min + (int)(Math.random() * ((max - min) + 1)));  System.out.println(min + (int)(Math.random() * ((max - min) + 1)));  System.out.println(min + (int)(Math.random() * ((max - min) + 1)));   } } 

Çıkış
Generated numbers are within 50 to 100 82 68 77 


3. ThreadLocalRandom'u kullanma

Bu, çekişmeyi azalttığı için çok iş parçacıklı ortamlarda önerilen yoldur.

Anahtar Yöntemler:

  • current().nextInt(): Rastgele tamsayı (tam aralık)
  • current().nextInt(min maks + 1): Aralıktaki rastgele tam sayı (Bu sınırlı örneği ekledim)
  • current().nextDouble(): Rastgele çift (0,0 ila 1,0)
  • current().nextBoolean(): Rastgele doğru veya yanlış

Örnek:

Java
// Demonstrates how to generate random integers  // doubles and booleans using ThreadLocalRandom import java.util.concurrent.ThreadLocalRandom; public class Geeks {  public static void main(String[] args) {  // Generate random integers in range 0 to 999  // Random number between 0 and 999  int r1 = ThreadLocalRandom.current().nextInt(1000);    // Random number between 0 and 999  int r2 = ThreadLocalRandom.current().nextInt(1000);   // Print random integers  System.out.println('Random Integers: ' + r1);  System.out.println('Random Integers: ' + r2);  // Generate Random doubles between 0.0 (inclusive)   // and 1.0 (exclusive)  double rd1 = ThreadLocalRandom.current().nextDouble();  double rd2 = ThreadLocalRandom.current().nextDouble();  // Print random doubles  System.out.println('Random Doubles: ' + rd1);  System.out.println('Random Doubles: ' + rd2);  // Generate random booleans  boolean rb1 = ThreadLocalRandom.current().nextBoolean();  boolean rb2 = ThreadLocalRandom.current().nextBoolean();  // Print random Booleans  System.out.println('Random Booleans: ' + rb1);  System.out.println('Random Booleans: ' + rb2);  } } 

Çıkış
Random Integers: 812 Random Integers: 461 Random Doubles: 0.7420865203902993 Random Doubles: 0.9580683365617423 Random Booleans: false Random Booleans: false