سجل القبطان

سجل القبطان

تمرين تعلّمي

مقدمة

كثير من البرامج تحتاج إلى قيم عشوائية (أو شبه عشوائية) لمحاكاة أحداث تحدث في الواقع.

ومن الأمثلة الشائعة والمألوفة:

  • رمي قطعة نقدية: قيمة عشوائية من بين ('H', 'T').
  • رمي حجر نرد: عدد صحيح عشوائي من 1 إلى 6.
  • خلط مجموعة من أوراق اللعب: ترتيب عشوائي لقائمة الأوراق.
  • إنشاء الأشجار والشجيرات في محاكاة رسوميات ثلاثية الأبعاد.

توليد قيم عشوائية حقيقية باستخدام الحاسوب تحدٍّ تقني صعب بشكل مفاجئ، ولهذا توجد أيضًا مولّدات "شبه عشوائية".

Caution

لا ينبغي إطلاقًا استخدام الدالة Math.random() في تطبيقات الأمان والتشفير! أكمل تمرين (تمارين) التعلّم الخاص بهذا المفهوم لتتعلّم المزيد

توليد أعداد عشوائية

في Javascript، يمكنك توليد أعداد شبه عشوائية باستخدام الدالة Math.random(). وهي تُرجع عددًا عشريًا شبه عشوائي بين 0 (ضمنا) و1 (دون أن يشملها).

التعليمات

ماري من المعجبين الكبار بمسلسل Star Trek: The Next Generation. كثيرًا ما تلعب ألعاب تقمّص الأدوار الورقية، حيث تتنكّر هي وأصدقاؤها في هيئة طاقم سفينة الفضاء Enterprise. شخصية ماري هي الكابتن بيكارد، ما يعني أنه يتعيّن عليها تدوين سجل الكابتن. تحب الجزء الإبداعي من اللعبة، لكنها لا تحب توليد بيانات عشوائية على الفور.

ساعد ماري بإنشاء مولّدات عشوائية للبيانات التي تظهر كثيرًا في سجل الكابتن.

1. توليد رقم تسجيل عشوائي لسفينة فضاء

إن Enterprise (رقم التسجيل NCC-1701) ليست السفينة الفضائية الوحيدة التي تجوب الفضاء! عندما تلتقي بسفينة فضاء أخرى، تحتاج ماري إلى تدوين رقم تسجيل تلك السفينة.

تبدأ أرقام التسجيل بالبادئة "NCC-" ثم تستخدم عددًا من 1000 إلى 9999 (شاملًا الطرفين).

نفّذ الدالة randomShipRegistryNumber() التي تُرجع رقم تسجيل عشوائيًا لسفينة فضاء.

randomShipRegistryNumber();
// => "NCC-1947"

2. توليد تاريخ نجمي عشوائي

وما فائدة السجل إن لم يتضمّن تواريخ؟

التاريخ النجمي هو عدد بفاصلة عائمة. تجري مغامرات سفينة الفضاء Enterprise في الموسم الأول من The Next Generation بين التاريخين النجميين 41000.0 و42000.0. يرمز الرقم "4" إلى القرن الرابع والعشرين، و"1" إلى الموسم الأول.

نفّذ الدالة randomStardate التي تُرجع عددًا بفاصلة عائمة بين 41000.0 (شاملًا) و42000.0 (غير شامل).

randomStardate();
// => 41458.15721310934

3. توليد كوكب عشوائي

تلتقي سفينة الفضاء Enterprise بكواكب كثيرة في رحلاتها. تُقسَّم الكواكب في عالم Star Trek إلى فئات بناءً على خصائصها. على سبيل المثال، الأرض كوكب من الفئة M. الفئات الكوكبية الممكنة كلها هي: D، H، J، K، L، M، N، R، T، وY.

نفّذ الدالة randomPlanetClass(). يجب أن تُرجع إحدى الفئات الكوكبية عشوائيًا.

randomPlanetClass();
// => "K"
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
JavaScript Exercism

مستعد لبدء سجل القبطان؟

سجّل في Exercism لتتعلّم وتتقن JavaScript عبر 37 مفهومًا159 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.