فئة Java Random تُستخدم لتوليد سلسلة من الأرقام العشوائية.
فئة Java Random
Random
تندرج ضمن حزمة java.util.- يُستخدم مثيل من فئة Java Random لتوليد أرقام عشوائية.
- توفر هذه الفئة العديد من الطرق لتوليد أرقام عشوائية من نوع integer، double، long، float، إلخ.
- يعتمد خوارزمية توليد الأرقام العشوائية على قيمة بذرة. في حالة عدم توفير قيمة بذرة، يتم إنشاء قيمة بذرة من وحدة الزمن النانوية للنظام.
- إذا كانت لدينا مثيلين من فئة Random بنفس قيمة بذرة، فإنهما سيولدان نفس التسلسل من الأرقام العشوائية.
- تعتبر فئة Java Random آمنة في البيئة متعددة الخيوط، ومع ذلك، يُفضل في البيئة متعددة الخيوط استخدام فئة
java.util.concurrent.ThreadLocalRandom
. - مثيلات فئة Random لا تُنصح باستخدامها في تطبيقات تتطلب حماية الأمان، ويفضل استخدام
java.security.SecureRandom
في تلك الحالات.
بناة فئة Java Random
تحتوي فئة Java Random على بنائين وهما كما يلي:
Random()
: ينشئ مولد عشوائي جديدRandom(long seed)
: ينشئ مولد عشوائي جديد باستخدام قيمة بذرة محددة
أساليب فئة Java Random
لنلقِ نظرة على بعض أساليب فئة Java Random.
nextBoolean()
: هذه الأسلوب يعيد القيمة الشبه عشوائية التالية والتي هي قيمة بوليانية من تسلسل مولد الأعداد العشوائية.nextDouble()
: هذا الأسلوب يعيد القيمة الشبه عشوائية التالية والتي هي قيمة عشرية مزدوجة بين 0.0 و 1.0.nextFloat()
: هذا الأسلوب يعيد القيمة الشبه عشوائية التالية والتي هي قيمة عشرية طافية بين 0.0 و 1.0.nextInt()
: هذا الأسلوب يعيد القيمة الشبه عشوائية التالية والتي هي قيمة صحيحة من تسلسل مولد الأعداد العشوائية.nextInt(int n)
: هذا الأسلوب يعيد قيمة شبه عشوائية والتي هي قيمة صحيحة بين 0 والقيمة المحددة من تسلسل مولد الأعداد العشوائية.
مثال Java Random
لنلقِ نظرة على برنامج مثال Java Random التالي.
package com.journaldev.examples;
import java.util.Random;
/**
* Java Random Number Example Program
*
*/
public class RandomNumberExample {
public static void main(String[] args) {
// تهيئة مولد الأعداد العشوائية
Random random = new Random();
// يُنشئ قيمة بوليانية
System.out.println(random.nextBoolean());
// يُنشئ قيمة عشرية مزدوجة
System.out.println(random.nextDouble());
// يُنشئ قيمة عشرية طافية
System.out.println(random.nextFloat());
// يُنشئ قيمة صحيحة
System.out.println(random.nextInt());
// يُنشئ قيمة صحيحة within specific limit
System.out.println(random.nextInt(20));
}
}
إخراج البرنامج أعلاه هو:
false
0.30986869120562854
0.6210066
-1348425743
18
تحقق من هذا المنشور لمزيد من المعلومات حول إنشاء أرقام عشوائية في جافا.
إنشاء رقم عشوائي باستخدام البذرة
هناك طريقتان يمكننا من خلالهما إنشاء أرقام عشوائية باستخدام البذرة.
Random random = new Random(long seed);
Random random1 = new Random();
random1.setSeed(seed);
البذرة هي القيمة الأولية للحالة الداخلية لمولد الأعداد العشوائية الزائفة التي يتم الاحتفاظ بها بواسطة الطريقة next(int).
package com.journaldev.examples;
import java.util.Random;
/**
* Java Random Number Using Seed Example Program
*
* @author pankaj
*
*/
public class RadomSeedExample {
public static void main(String[] args) {
// باستخدام البناء
Random random = new Random(100);
System.out.println("Using Constructor");
System.out.println(random.nextInt());
// باستخدام الطريقة
Random random2 = new Random();
random2.setSeed(200);
System.out.println("Using Method");
System.out.println(random2.nextInt());
}
}
نتيجة البرنامج أعلاه هي:
Using Constructor
-1193959466
Using Method
-1133938638
ماذا لو قمنا بتمرير نفس البذرة إلى مولدي الأعداد العشوائية المختلفة؟ دعنا نلقي نظرة على البرنامج أدناه ونرى ماذا يحدث إذا قمنا بتمرير نفس البذرة إلى مولدي الأعداد العشوائية المختلفة.
package com.journaldev.examples;
import java.util.Random;
/**
* Java Random Number Using Same Seed Example Program
*
*/
public class RandomNumberSameSeedExample {
public static void main(String[] args) {
// تهيئة مولدين للأعداد العشوائية باستخدام نفس البذرة
Random random1 = new Random(100);
Random random2 = new Random(100);
System.out.println(random1.nextInt());
System.out.println(random2.nextInt());
}
}
نتيجة البرنامج أعلاه هي:
-1193959466
-1193959466
يمكننا أن نرى أنه سيتم إنشاء نفس الرقم العشوائي إذا قمنا بتمرير نفس البذرة إلى مولدي الأعداد العشوائية المختلفة.
طرق فئة Random في جافا 8
كما يمكنك رؤية من الصورة أعلاه، تمت إضافة العديد من الأساليب الجديدة في فئة Random في جافا 8. يمكن لهذه الأساليب إنتاج تدفق من الأرقام العشوائية. فيما يلي برنامج بسيط لإنشاء تدفق من 5 أعداد صحيحة بين 1 و 100.
package com.journaldev.random;
import java.util.Random;
import java.util.stream.IntStream;
public class JavaRandomExample {
public static void main(String[] args) {
Random random = new Random();
// إنشاء تدفق من 5 أعداد صحيحة بين 1 و 100
IntStream ints = random.ints(5, 1, 100);
ints.forEach(System.out::println);
}
}
هذا كل شيء لملخص سريع عن فئة Random في جافا. المرجع: وثائق API
Source:
https://www.digitalocean.com/community/tutorials/java-random