Pregunta

He muy definitivamente venir a través de la 'simulación de una matriz 6 de cara' (que produce un entero aleatorio entre 1 y 6, todos los resultados son igualmente probables) en Java, Python, Ruby y Bash. Sin embargo, todavía estoy para ver un programa similar en Ada. Alguien ha encontrado uno?

¿Fue útil?

Solución

Vea generación de números aleatorios (LRM A.5.2 ) paquetes para ayudar con hacer esto. De cualquier Ada.Numerics.Float_Random para la generación de números aleatorios uniformes (rango 0.0 .. 1.0) que luego se puede escalar por su cuenta, o una instancia de Ada.Numerics.Discrete_Random con un adecuado (sub) tipo (trabaja para D4, D10, D12, y D20S, así!).

Otros consejos

Es posible disfrutar de esta simulación de juego de los niños tarjeta de guerra , que utiliza una instancia 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);

Con Ada 95, un generador de números aleatorios se definió como parte de la biblioteca estándar por lo que es un componente requerido de cada sistema de compilación Ada 95.

Por lo tanto, sí se puede simular una matriz 6 con cara de Ada con bastante facilidad.

RossetaCode.org suelen tener este tipo de programas típicos. Se puede encontrar una aplicación sencilla dado de 6 de rostro cerdo juego de dados .

Estas son las partes pertinentes de dicho programa para una aplicación dados.

Se define el rango deseado en un tipo:

type Dice_Score is range 1 .. 6;

Ada.Numerics.Discrete_Random instantiate con su tipo:

with Ada.Numerics.Discrete_Random;

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

Utilice la creación de instancias para obtener un valor aleatorio en el rango:

Gen: RND.Generator; 

P.Recent_Roll := RND.Random(Gen);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top