بسیاری از برنامهها برای شبیهسازی رویدادهای دنیای واقعی به مقادیر (شبه)تصادفی نیاز دارند.
نمونههای رایج و آشنای آن عبارتاند از:
تولید مقادیر واقعاً تصادفی با کامپیوتر یک چالش فنی بهطور شگفتآوری دشوار است، و به همین دلیل مولدهای «شبهتصادفی» هم وجود دارند.
از تابع Math.random() نباید در کاربردهای امنیتی و رمزنگاری استفاده شود!
برای یادگیری بیشتر، تمرین(های) یادگیری مربوط به این مفهوم را کامل کنید
در Javascript، میتوانید اعداد شبهتصادفی را با تابع Math.random() تولید کنید.
این تابع یک عدد اعشاری شبهتصادفی بین ۰ (شامل) و ۱ (غیرشامل) برمیگرداند.
مری طرفدار پروپاقرص مجموعهی تلویزیونی Star Trek: The Next Generation است. او اغلب بازیهای نقشآفرینی قلم و کاغذی انجام میدهد، بازیهایی که در آنها او و دوستانش خود را خدمهی سفینهی Enterprise جا میزنند. شخصیت مری، کاپیتان پیکارد است، یعنی باید دفترچهی کاپیتان را نگه دارد. او بخش خلاقانهی بازی را دوست دارد، اما دوست ندارد دادههای تصادفی را در لحظه تولید کند.
با ساختن تولیدکنندههای تصادفی برای دادههایی که معمولاً در دفترچهی کاپیتان ظاهر میشوند، به مری کمک کنید.
Enterprise (با شمارهی ثبت NCC-1701) تنها سفینهی فضایی در حال پرواز نیست! وقتی با سفینهی فضایی دیگری روبهرو میشود، مری باید شمارهی ثبت آن سفینه را ثبت کند.
شمارههای ثبت با پیشوند «NCC-» شروع میشوند و سپس از عددی بین ۱۰۰۰ تا ۹۹۹۹ (هر دو شامل) استفاده میکنند.
تابع 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 تمرین و مربیگری انسانی واقعی یاد بگیرید و در آن استاد شوید، همهی اینها رایگان.