Parcours
/
JavaScript
JavaScript
/
Exercices
/
Journal de bord
Journal de bord

Journal de bord

Exercice d'apprentissage

Introduction

Beaucoup de programmes ont besoin de valeurs (pseudo-)aléatoires pour simuler des événements du monde réel.

Voici quelques exemples courants et bien connus :

  • Un lancer de pièce : une valeur aléatoire parmi ('H', 'T').
  • Le lancer d'un dé : un entier aléatoire entre 1 et 6.
  • Le mélange d'un jeu de cartes : un ordre aléatoire d'une liste de cartes.
  • La création d'arbres et de buissons dans une simulation graphique en 3D.

Générer de vraies valeurs aléatoires avec un ordinateur est un défi technique étonnamment difficile, ce qui explique qu'il existe aussi des générateurs « pseudo-aléatoires ».

Caution

La fonction Math.random() ne doit PAS être utilisée pour la sécurité ou les applications cryptographiques ! Termine le ou les exercices d'apprentissage sur ce concept pour en savoir plus.

Génère des nombres aléatoires

En Javascript, on peut générer des nombres pseudo-aléatoires à l'aide de la fonction Math.random(). Elle renvoie un nombre décimal pseudo-aléatoire compris entre 0 (inclus) et 1 (exclu).

Instructions

Mary est une grande fan de la série télévisée Star Trek: The Next Generation. Elle joue souvent à des jeux de rôle sur table, dans lesquels elle et ses amis se font passer pour l'équipage du vaisseau spatial Enterprise. Le personnage de Mary est le capitaine Picard, ce qui signifie qu'elle doit tenir le journal de bord du capitaine. Elle adore la part créative du jeu, mais elle n'aime pas devoir générer des données aléatoires à la volée.

Aide Mary en créant des générateurs aléatoires pour les données qui apparaissent souvent dans le journal de bord.

1. Génère un numéro d'immatriculation aléatoire de vaisseau spatial

L'Enterprise (numéro d'immatriculation NCC-1701) n'est pas le seul vaisseau spatial en circulation ! Quand il en croise un autre, Mary doit noter le numéro d'immatriculation de ce vaisseau.

Les numéros d'immatriculation commencent par le préfixe « NCC- », puis comportent un nombre compris entre 1000 et 9999 (bornes incluses).

Implémente la fonction randomShipRegistryNumber() qui renvoie un numéro d'immatriculation de vaisseau spatial aléatoire.

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

2. Génère une date stellaire aléatoire

À quoi bon un journal s'il ne contient pas de dates ?

Une date stellaire est un nombre décimal. Les aventures du vaisseau spatial Enterprise de la première saison de The Next Generation se déroulent entre les dates stellaires 41000,0 et 42000,0. Le « 4 » désigne le 24e siècle, le « 1 » la première saison.

Implémente la fonction randomStardate qui renvoie un nombre décimal compris entre 41000,0 (inclus) et 42000,0 (exclu).

randomStardate();
// => 41458.15721310934

3. Génère une planète aléatoire

Le vaisseau spatial Enterprise croise de nombreuses planètes au cours de ses voyages. Dans l'univers de Star Trek, les planètes sont réparties en catégories selon leurs propriétés. Par exemple, la Terre est une planète de classe M. Toutes les classes planétaires possibles sont : D, H, J, K, L, M, N, R, T et Y.

Implémente la fonction randomPlanetClass(). Elle doit renvoyer l'une des classes planétaires au hasard.

randomPlanetClass();
// => "K"
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
JavaScript Exercism

Prêt à commencer Journal de bord ?

Inscris-toi sur Exercism pour apprendre et maîtriser JavaScript avec 37 concepts159 exercices, et un vrai mentorat humain, le tout gratuitement.