كثير من البرامج تحتاج إلى قيم عشوائية (أو شبه عشوائية) لمحاكاة أحداث تحدث في الواقع.
ومن الأمثلة الشائعة والمألوفة:
توليد قيم عشوائية حقيقية باستخدام الحاسوب تحدٍّ تقني صعب بشكل مفاجئ، ولهذا توجد أيضًا مولّدات "شبه عشوائية".
لا ينبغي إطلاقًا استخدام الدالة Math.random() في تطبيقات الأمان والتشفير!
أكمل تمرين (تمارين) التعلّم الخاص بهذا المفهوم لتتعلّم المزيد
في Javascript، يمكنك توليد أعداد شبه عشوائية باستخدام الدالة Math.random().
وهي تُرجع عددًا عشريًا شبه عشوائي بين 0 (ضمنا) و1 (دون أن يشملها).
ماري من المعجبين الكبار بمسلسل Star Trek: The Next Generation. كثيرًا ما تلعب ألعاب تقمّص الأدوار الورقية، حيث تتنكّر هي وأصدقاؤها في هيئة طاقم سفينة الفضاء Enterprise. شخصية ماري هي الكابتن بيكارد، ما يعني أنه يتعيّن عليها تدوين سجل الكابتن. تحب الجزء الإبداعي من اللعبة، لكنها لا تحب توليد بيانات عشوائية على الفور.
ساعد ماري بإنشاء مولّدات عشوائية للبيانات التي تظهر كثيرًا في سجل الكابتن.
إن Enterprise (رقم التسجيل NCC-1701) ليست السفينة الفضائية الوحيدة التي تجوب الفضاء! عندما تلتقي بسفينة فضاء أخرى، تحتاج ماري إلى تدوين رقم تسجيل تلك السفينة.
تبدأ أرقام التسجيل بالبادئة "NCC-" ثم تستخدم عددًا من 1000 إلى 9999 (شاملًا الطرفين).
نفّذ الدالة randomShipRegistryNumber() التي تُرجع رقم تسجيل عشوائيًا لسفينة فضاء.
randomShipRegistryNumber();
// => "NCC-1947"
وما فائدة السجل إن لم يتضمّن تواريخ؟
التاريخ النجمي هو عدد بفاصلة عائمة. تجري مغامرات سفينة الفضاء Enterprise في الموسم الأول من The Next Generation بين التاريخين النجميين 41000.0 و42000.0. يرمز الرقم "4" إلى القرن الرابع والعشرين، و"1" إلى الموسم الأول.
نفّذ الدالة randomStardate التي تُرجع عددًا بفاصلة عائمة بين 41000.0 (شاملًا) و42000.0 (غير شامل).
randomStardate();
// => 41458.15721310934
تلتقي سفينة الفضاء Enterprise بكواكب كثيرة في رحلاتها. تُقسَّم الكواكب في عالم Star Trek إلى فئات بناءً على خصائصها. على سبيل المثال، الأرض كوكب من الفئة M. الفئات الكوكبية الممكنة كلها هي: D، H، J، K، L، M، N، R، T، وY.
نفّذ الدالة randomPlanetClass().
يجب أن تُرجع إحدى الفئات الكوكبية عشوائيًا.
randomPlanetClass();
// => "K"
سجّل في Exercism لتتعلّم وتتقن JavaScript عبر 37 مفهومًا159 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.