Треки
/
Java
Java
/
Вправи
/
Капітанський журнал
Капітанський журнал

Капітанський журнал

Навчальна вправа

Вступ

Випадковість

Екземпляр класу 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

Вказівки

Мері - велика шанувальниця серіалу «Зоряний шлях: Наступне покоління». Вона часто грає в настільні рольові ігри, де вони з друзями уявляють себе екіпажем зорельота «Ентерпрайз». Персонаж Мері - капітан Пікар, тож їй доводиться вести журнал капітана. Їй подобається творча частина гри, але не подобається генерувати випадкові дані на ходу.

Допоможімо Мері, створивши генератори випадкових даних, які часто трапляються в журналі капітана.

Note

Початкова реалізація цієї вправи приймає екземпляр java.util.Random як аргумент конструктора. Це дозволяє тестам вправи передати екземпляр із наперед заданим зерном, завдяки чому результати тестів стають передбачуваними.

Тому у своїй реалізації ми маємо використати наданий екземпляр java.util.Random.

1. Згенеруйте випадкову планету

Під час своїх подорожей «Ентерпрайз» натрапляє на безліч планет. У всесвіті «Зоряного шляху» планети поділяють на категорії за їхніми властивостями. Наприклад, Земля належить до планет класу M. Усі можливі класи планет: D, H, J, K, L, M, N, R, T і Y.

Реалізуйте метод randomPlanetClass(). Він має повертати один із класів планет випадковим чином.

captainsLog.randomPlanetClass();
// => "K"

2. Згенеруйте випадковий реєстраційний номер зорельота

«Ентерпрайз» (реєстраційний номер NCC-1701) не єдиний зореліт у космосі! Коли він зустрічається з іншим зорельотом, Мері потрібно занести його реєстраційний номер до журналу.

Реєстраційні номери починаються з префікса «NCC-», після чого йде число від 1000 до 9999 (включно).

Реалізуйте метод randomShipRegistryNumber(), який повертає випадковий реєстраційний номер зорельота.

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

3. Згенеруйте випадкову зоряну дату

Який сенс у журналі, якщо в ньому немає дат?

Зоряна дата - це число з плаваючою комою. Пригоди «Ентерпрайза» з першого сезону «Наступного покоління» відбуваються між зоряними датами 41000.0 і 42000.0. «4» означає 24 століття, а «1» - перший сезон.

Реалізуйте метод randomStardate(), який повертає число з плаваючою комою у проміжку від 41000.0 (включно) до 42000.0 (не включно).

captainsLog.randomStardate();
// => 41458.15721310934
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Java Exercism

Час розпочати Капітанський журнал?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Java, а також 26 концепцій158 вправ та справжнє наставництво від людей, і все це безкоштовно.