میتوان از یک نمونه از کلاس 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 است. او اغلب بازیهای نقشآفرینی کاغذی و قلمی بازی میکند که در آنها خودش و دوستانش وانمود میکنند خدمهی Starship Enterprise هستند. شخصیت مری، کاپیتان پیکارد است، یعنی او باید دفترچهی وقایع کاپیتان را بنویسد. او بخش خلاقانهی بازی را دوست دارد، اما دوست ندارد در لحظه دادههای تصادفی تولید کند.
با ساختن تولیدکنندههای تصادفی برای دادههایی که معمولاً در دفترچهی وقایع کاپیتان ظاهر میشوند، به مری کمک کنید.
پیادهسازی اولیهی این تمرین یک نمونهی java.util.Random را به عنوان آرگومان سازنده میگیرد.
این کار به تستهای تمرین اجازه میدهد نمونهای با «بذر» از پیش تعیینشده ارسال کنند، که نتایج تست را قابل پیشبینی میکند.
بنابراین انتظار میرود در پیادهسازی خود از نمونهی java.util.Random که در اختیارتان قرار گرفته استفاده کنید.
Starship 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"
دفترچهی وقایعی که تاریخ نداشته باشد چه فایدهای دارد؟
«تاریخ ستارهای» یک عدد ممیز شناور است.
ماجراهای Starship Enterprise در فصل اول The Next Generation بین تاریخهای ستارهای 41000.0 و 42000.0 رخ میدهند.
«4» به معنای قرن بیستوچهارم است و «1» به معنای فصل اول.
متد randomStardate() را پیادهسازی کنید که عددی ممیز شناور از 41000.0 (شامل) تا 42000.0 (نامشمل) برمیگرداند.
captainsLog.randomStardate();
// => 41458.15721310934