مسیرها
/
JavaScript
JavaScript
/
تمرین‌ها
/
دفترچه‌ی ناخدا
دفترچه‌ی ناخدا

دفترچه‌ی ناخدا

تمرین یادگیری

مقدمه

بسیاری از برنامه‌ها برای شبیه‌سازی رویدادهای دنیای واقعی به مقادیر (شبه)تصادفی نیاز دارند.

نمونه‌های رایج و آشنای آن عبارت‌اند از:

  • شیر یا خط انداختن: مقداری تصادفی از ('H', 'T').
  • انداختن تاس: عددی صحیح و تصادفی از ۱ تا ۶.
  • بُر زدن یک دسته کارت: ترتیبی تصادفی از فهرست کارت‌ها.
  • ساخت درخت‌ها و بوته‌ها در یک شبیه‌سازی گرافیکی سه‌بعدی.

تولید مقادیر واقعاً تصادفی با کامپیوتر یک چالش فنی به‌طور شگفت‌آوری دشوار است، و به همین دلیل مولدهای «شبه‌تصادفی» هم وجود دارند.

Caution

از تابع Math.random() نباید در کاربردهای امنیتی و رمزنگاری استفاده شود! برای یادگیری بیشتر، تمرین(های) یادگیری مربوط به این مفهوم را کامل کنید

تولید اعداد تصادفی

در Javascript، می‌توانید اعداد شبه‌تصادفی را با تابع Math.random() تولید کنید. این تابع یک عدد اعشاری شبه‌تصادفی بین ۰ (شامل) و ۱ (غیرشامل) برمی‌گرداند.

دستورالعمل‌ها

مری طرفدار پروپاقرص مجموعه‌ی تلویزیونی Star Trek: The Next Generation است. او اغلب بازی‌های نقش‌آفرینی قلم و کاغذی انجام می‌دهد، بازی‌هایی که در آن‌ها او و دوستانش خود را خدمه‌ی سفینه‌ی Enterprise جا می‌زنند. شخصیت مری، کاپیتان پیکارد است، یعنی باید دفترچه‌ی کاپیتان را نگه دارد. او بخش خلاقانه‌ی بازی را دوست دارد، اما دوست ندارد داده‌های تصادفی را در لحظه تولید کند.

با ساختن تولیدکننده‌های تصادفی برای داده‌هایی که معمولاً در دفترچه‌ی کاپیتان ظاهر می‌شوند، به مری کمک کنید.

1. تولید یک شماره‌ی ثبت تصادفی سفینه‌ی فضایی

Enterprise (با شماره‌ی ثبت NCC-1701) تنها سفینه‌ی فضایی در حال پرواز نیست! وقتی با سفینه‌ی فضایی دیگری روبه‌رو می‌شود، مری باید شماره‌ی ثبت آن سفینه را ثبت کند.

شماره‌های ثبت با پیشوند «NCC-» شروع می‌شوند و سپس از عددی بین ۱۰۰۰ تا ۹۹۹۹ (هر دو شامل) استفاده می‌کنند.

تابع 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 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.