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?

È stato utile?

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top