Simulazione di un dado a 6 facce in Ada-2005
-
18-09-2019 - |
Domanda
Sono molto definitivamente incontrato il 'simulando un dado a 6 facce' (che produce un numero intero casuale fra 1 e 6, tutti gli esiti sono equiprobabili) in Java, Python, Ruby e Bash. Tuttavia, sono ancora a vedere un programma simile in Ada. Qualcuno ha incontrato uno?
Soluzione
Vedere generazione di numeri casuali (LRM A.5.2 ) per i pacchetti per assistere con fare questo. Sia Ada.Numerics.Float_Random per la generazione di numeri casuali uniforme (range 0.0 .. 1.0) che è quindi possibile scalare da soli, o istanziare Ada.Numerics.Discrete_Random con idoneo (sub) tipo (lavora per d4, D10, D12, e D20S, come pure!).
Altri suggerimenti
Si potrebbe godere di questa simulazione di gioco di carte dei bambini della guerra , che utilizza un'istanza di 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);
Con Ada 95, un generatore di numeri casuali è stato definito come parte della libreria standard che lo rende un componente necessario di ogni Ada 95 sistema di compilazione.
Quindi, sì, si può simulare un dado a 6 facce in Ada abbastanza facilmente.
RossetaCode.org di solito hanno questo tipo di programmi tipici. Si può trovare una semplice implementazione dadi a 6 facce in Pig il gioco dei dadi .
Questi sono gli elementi rilevanti di quel programma per l'implementazione dei dadi.
È possibile definire l'intervallo desiderato in un tipo:
type Dice_Score is range 1 .. 6;
instantiate Ada.Numerics.Discrete_Random con il vostro tipo:
with Ada.Numerics.Discrete_Random;
package RND is new Ada.Numerics.Discrete_Random(Dice_Score);
Con l'istanza per ottenere un valore casuale nell'intervallo:
Gen: RND.Generator;
P.Recent_Roll := RND.Random(Gen);