Pergunta

Definitivamente, encontrei o 'simulação de um dado de 6 caras' (que produz um número inteiro aleatório entre 1 e 6, todos os resultados são igualmente prováveis) em Java, Python, Ruby e Bash. No entanto, ainda estou para ver um programa semelhante na ADA. Alguém se deparou com um?

Foi útil?

Solução

Veja geração de números aleatórios (LRM A.5.2) para pacotes para ajudar a fazer isso. Ou Ada.numerics.float_random para geração de números aleatórios uniformes (variação 0,0 .. 1,0), que você pode escalar por conta própria ou instanciar a Ada.numerics.discrete_random com um tipo adequado (sub) (trabalha para d4, d10, d12, e D20s também!).

Outras dicas

Você pode aproveitar esta simulação das crianças jogo de cartas de guerra, que usa uma instância 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);

Com o ADA 95, um gerador de números aleatórios foi definido como parte da biblioteca padrão, tornando -o um componente necessário de cada sistema de compilação ADA 95.

Portanto, sim, você pode simular um dado de 6 caras em Ada com bastante facilidade.

Rossetacode.org geralmente possui esse tipo de programas típicos. Você pode encontrar uma implementação simples de dados de 6 face em Pig o jogo de dados.

Essas são as partes relevantes desse programa para uma implementação de dados.

Você define o intervalo de desejos em um tipo:

type Dice_Score is range 1 .. 6;

instanciado ada.numerics.discrete_random com o seu tipo:

with Ada.Numerics.Discrete_Random;

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

Use a instanciação para obter um valor aleatório no intervalo:

Gen: RND.Generator; 

P.Recent_Roll := RND.Random(Gen);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top