Question

Je suis très définitivement venir à travers la « simulation d'un dé à 6 faces » (qui produit un nombre aléatoire compris entre 1 et 6, tous les résultats sont également probables) en Java, Python, Ruby et bash. Cependant, je suis encore à voir un programme similaire en Ada. Quelqu'un at-il rencontré un?

Était-ce utile?

La solution

Voir Génération de nombres aléatoires (LRM A.5.2 ) pour les paquets pour aider à le faire. Soit Ada.Numerics.Float_Random pour la génération de nombres aléatoires uniforme (plage 0,0 .. 1.0) que vous pouvez ensuite l'échelle sur votre propre ou instancier Ada.Numerics.Discrete_Random un milieu approprié (sous) type (fonctionne pour d4, D10, D12, et D20S aussi bien!).

Autres conseils

Vous pouvez profiter de cette simulation des enfants de la guerre , qui utilise une instance de Ada.Numerics.Discrete_Random .

subtype Card_Range is Positive range 1 .. 52;
package Any_Card is new Ada.Numerics.Discrete_Random(Card_Range);
G : Any_Card.Generator;
…
N : Card_Range := Any_Card.Random(G);

Avec Ada 95, un générateur de nombres aléatoires a été défini dans le cadre de la bibliothèque standard qui en fait un composant requis de chaque système de compilation Ada 95.

Par conséquent, oui, vous pouvez simuler un dé à 6 faces en Ada assez facilement.

RossetaCode.org ont généralement ce genre de programmes typiques. Vous pouvez trouver une implémentation simple dés à 6 faces Pig le jeu de dés .

Ce sont les parties pertinentes de ce programme pour une mise en œuvre dés.

Vous définissez la gamme désirée dans un type:

type Dice_Score is range 1 .. 6;

instancier Ada.Numerics.Discrete_Random avec votre type:

with Ada.Numerics.Discrete_Random;

package RND is new Ada.Numerics.Discrete_Random(Dice_Score);

Utilisez l'instanciation pour obtenir une valeur aléatoire dans la plage:

Gen: RND.Generator; 

P.Recent_Roll := RND.Random(Gen);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top