يمكن استخدام نسخة من الصنف java.util.Random لتوليد أعداد عشوائية في Java.
يمكن توليد عدد صحيح عشوائي باستخدام الطريقة nextInt().
سيولّد هذا قيمة في المدى من Integer.MIN_VALUE إلى Integer.MAX_VALUE.
Random random = new Random();
random.nextInt();
// => -1169335537
لتحديد مدى القيم المولَّدة، استخدم nextInt(int).
سيولّد هذا قيمة في المدى من 0 (شاملًا) إلى الحد الأعلى المعطى (غير شامل).
على سبيل المثال، سيولّد هذا عددًا عشوائيًا من 0 إلى 9.
Random random = new Random();
random.nextInt(10);
// => 6
وسيولّد هذا عددًا عشوائيًا من 10 إلى 19.
Random random = new Random();
10 + random.nextInt(10);
// => 11
يمكن توليد عدد عشري عشوائي باستخدام الطريقة nextDouble().
سيولّد هذا قيمة في المدى من 0.0 إلى 1.0.
Random random = new Random();
random.nextDouble();
// => 0.19250004204021398
وسيولّد هذا عددًا عشوائيًا من 100.0 إلى 200.0.
Random random = new Random();
100.0 + 100.0 * random.nextDouble();
// => 111.31849856260328
ماري من أشد المعجبين بالمسلسل التلفزيوني Star Trek: The Next Generation. غالبًا ما تلعب ألعاب تقمّص الأدوار الورقية، حيث تتظاهر هي وأصدقاؤها بأنهم طاقم سفينة الفضاء Enterprise. شخصية ماري هي الكابتن بيكارد، مما يعني أن عليها الاحتفاظ بسجل الكابتن. تحب الجزء الإبداعي من اللعبة، لكنها لا تحب توليد بيانات عشوائية على الفور.
ساعد ماري عبر إنشاء مولّدات عشوائية للبيانات التي تظهر عادةً في سجل الكابتن.
يأخذ التنفيذ الأولي لهذا التمرين كائنًا من java.util.Random كوسيط للمُنشئ.
يتيح هذا لاختبارات التمرين تمرير نسخة ببذرة محددة مسبقًا، مما يجعل نتائج الاختبار قابلة للتنبؤ.
لذلك، يُتوقع منك استخدام كائن java.util.Random المرفق في تنفيذك.
تلتقي سفينة الفضاء Enterprise بالعديد من الكواكب في رحلاتها.
تُقسم الكواكب في عالم Star Trek إلى فئات بناءً على خصائصها.
على سبيل المثال، الأرض كوكب من الصنف M.
جميع أصناف الكواكب الممكنة هي: D، H، J، K، L، M، N، R، T، وY.
نفّذ طريقة randomPlanetClass().
يجب أن تُرجع أحد أصناف الكواكب عشوائيًا.
captainsLog.randomPlanetClass();
// => "K"
ليست Enterprise (رقم التسجيل NCC-1701) سفينة الفضاء الوحيدة التي تحلّق في الأرجاء!
عندما تلتقي بسفينة فضاء أخرى، تحتاج ماري إلى تدوين رقم تسجيل تلك السفينة.
تبدأ أرقام التسجيل بالبادئة "NCC-" ثم تستخدم عددًا من 1000 إلى 9999 (ضمنًا).
نفّذ طريقة randomShipRegistryNumber() التي تُرجع رقم تسجيل عشوائيًا لسفينة فضاء.
captainsLog.randomShipRegistryNumber();
// => "NCC-1947"
ما فائدة سجل لا يتضمن تواريخ؟
التاريخ النجمي هو عدد عشري.
تجري مغامرات سفينة الفضاء Enterprise من الموسم الأول من The Next Generation بين التاريخين النجميين 41000.0 و42000.0.
يشير الرقم "4" إلى القرن الرابع والعشرين، والرقم "1" إلى الموسم الأول.
نفّذ طريقة randomStardate() التي تُرجع عددًا عشريًا بين 41000.0 (ضمنًا) و42000.0 (حصريًا).
captainsLog.randomStardate();
// => 41458.15721310934
سجّل في Exercism لتتعلّم وتتقن Java عبر 26 مفهومًا158 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.