Java'da java.util.Random sınıfı nedir?

Java.util.Random sınıfı sözde rasgele sayılar oluşturmak için kullanılır. Bu sınıf tarafından uygulanan yöntemler, int, double ve float gibi farklı rasgele veri türleri oluşturmak için kullanılır. Dolayısıyla, iki ana rasgele sayı türü vardır, istatistiksel olarak rasgele ve sözde rasgele sayılar . İstatistiksel olarak rasgele sayılar (matematikteki basit rasgele sayılar gibi), tanınabilir bir örüntüye sahip olmayan bir dizi değerdir. Örneğin, bir zarı 10 kez atmak, her seferinde tanınabilir bir örüntüye sahip olmayan rastgele bir sayı üretecektir.

Sözde Rastgele Sayılar nedir?

İstatistiksel olarak rastgele olan ancak bilinen bir başlangıç ​​noktasına sahip bir değerler kümesidir . Java'da, her sözde rasgele sayı bir algoritma aracılığıyla üretilir. Bu nedenle, java.util.Random her rastgele sayı oluşturduğunda tipik olarak bir döngü tekrarlanır . Java'daki bir rasgele sayı üreteci, istatistiksel olarak rasgele sayılar üretecek, ancak bir algoritma tarafından oluşturulan bilinen bir başlangıç ​​noktasıyla. Bu, bu değerleri sözde rasgele yapar.

java.util.Random sınıfı Kriptografik Olarak Güvensiz mi?

Rastgele sayılar üretmek için uygulanan algoritmalara sahip olduğu için kriptografik olarak güvensizdir. Sonuç olarak, algoritmanın nasıl çalıştığını bilen bir kişinin hassas verilerinize erişmesi fazla zaman almayacaktır. Bu nedenle, bazı güvenlik uygulamalarıyla çalışıyorsanız, bazı hassas verileri güvence altına almanız gerekiyorsa veya rastgele parolalar oluşturmanız gerekiyorsa, bu sınıfı kullanmaktan kaçınmak daha iyidir. Kızma Biraderde zar atışınız için rastgele bir sayı oluşturmak, kumar oynamak, bir maç için atış yapmak veya istediğiniz sonucun öngörülemez olduğu diğer alanlar gibi birçok durumda yararlıdır.

Yöntem Bildirimi

Bu sınıfın yöntemlerini kullanmak için önce onu paketten şu şekilde içe aktarmanız gerekir:

import java.util.Random;
İçe aktardıktan sonra, bu sınıftan bir nesne oluşturmanız gerekir.

Random randomNumbers = new Random();
Daha da ileri giderek, java.util.Random sınıfını kullanmak için farklı örneklere göz atalım .

Örnek


import java.util.Random;

public class RandomClassExample1 {

	public static void main(String[] args) {

		// create random object
		Random randomNumbers = new Random();
		
		System.out.println("----------Random Boolean---------" );
		/*
		 * Returns the next pseudo random boolean value which 
		 * may be used in a toss for a match
		 */
		boolean value = randomNumbers.nextBoolean();
		System.out.println("The random boolean value is: " + value);
		
		/*
		 * Returns the next pseudo random integer value between 0 and 5  
		 * because if we use '6' then, it will give random numbers from 0 to 6 
		 * hence incrementing it by 1 you can use it as a result of a dice roll
		 */
		System.out.println("\n----------Random Integer---------" );
		System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
		System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
		System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
		System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
		System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
		
		// return the next pseudo random long value
		Long val = randomNumbers.nextLong();
		System.out.println("\n----------Random Long---------" );
		System.out.println("Random Long value: " + val);
		
		/*
		 * Generates random bytes and puts them in an array, which you can for some
		 * desired unpredictable result that is summing all the values in the array
		 */
		
		System.out.println("\n----------Random Bytes---------" );
		byte[] bytes = new byte[8];
		randomNumbers.nextBytes(bytes);
		
		System.out.print("These are the random bytes = [ ");
		for (int i = 0; i < bytes.length; i++) {
			System.out.printf("%d ", bytes[i]);
		}
		System.out.println("]");
	}

}

Çıktı

----------Rastgele Boolean--------- Rastgele boole değeri: true ----------Rastgele Tamsayı--------- Die Rulo: 4 Kalıp Rulosu: 6 Kalıp Rulosu: 1 Kalıp Rulosu: 1 Kalıp Rulosu: 3 ----------Rastgele Uzun--------- Rastgele Uzun değer: -6029959293504570824 ---- ------Rastgele Baytlar--------- Bunlar rastgele baytlardır = [ -37 90 -98 -70 23 -111 19 108 ]

Yöntemler

Şimdi, randomNumbers'ın sınıfımızın nesnesi veya örneği olduğunu aklımızda tutarak, bu sınıf tarafından sağlanan yöntemlerden bazılarını tartışacağız .
  1. çiftler() :

    Bu yöntem, sözde rasgele oluşturulmuş sonsuz bir dizi çift değer döndürür. Şimdi bu yöntemin nasıl kullanılacağına bakalım.

    
    randomNumbers.doubles();
    
  2. ints() :

    Bu yöntem, sözde rasgele oluşturulmuş tamsayı değerlerinin sonsuz bir serisini döndürür. Bu yöntemi çağırmak için aşağıdaki betiği kullanabilirsiniz.

    
    randomNumbers.ints();
    
  3. uzunlar() :

    Bu yöntem, sözde rasgele oluşturulmuş uzun değerlerin sonsuz bir serisini döndürür. Aşağıdaki betik, bu yöntemi çağırmak için kullanılır.

    
    randomNumbers.longs();
    
  4. nextBoolean() :

    Bu yöntem, rasgele sayı üreteci dizisinden bir sonraki düzgün dağıtılmış sözde rasgele boole değerini döndürür. Düzgün dağılım dikdörtgen şeklindedir, yani dağılımdaki her değerin eşit olasılığı vardır. İşte bu yöntemin nasıl kullanılacağı.

    
    randomNumbers.nextBoolean();
    
  5. nextInt(int n) :

    Bu yöntem, 0 dahil ve sağlanan değer hariç olmak üzere, rasgele sayı üreteci dizisinden bir sonraki düzgün dağıtılmış sözde rasgele tamsayı değerini döndürür. Bu yöntemin nasıl kullanılacağına dair hızlı bir görüşe sahip olun.

    
    randomNumbers.nextInt(10);
    

Çözüm

Java.util.Random'un ne olduğunu , farklı yöntemlerinin nasıl uygulanacağını ve hangi senaryoda kullanılacağını şimdiye kadar anladığınızı umuyoruz . Java'da bu sınıfı her zaman kullanabilirsiniz. Daha fazla yardıma ihtiyacınız olduğunda pratik yapmaktan ve buraya gelmekten çekinmeyin. Mutlu öğrenme!