Моделирование 6-кратной кубики в ADA-2005

StackOverflow https://stackoverflow.com/questions/2407166

  •  18-09-2019
  •  | 
  •  

Вопрос

Я очень окончательно наткнулся на «моделирование 6-кратного матрица» (которое создает случайное целое число между 1 и 6, все результаты одинаково вероятно) в Java, Python, Ruby и Bash. Тем не менее, мне еще предстоит увидеть аналогичную программу в ADA. Кто -нибудь сталкивается с одним?

Это было полезно?

Решение

См. Генерацию случайных чисел (LRM A.5.2) для пакетов, чтобы помочь с этим. Либо ada.numerics.float_random для универсального генерации случайных чисел (диапазон 0,0 .. 1,0), который затем можно масштабировать самостоятельно, либо создание экземпляра Ada.numerics.discrete_random с подходящим (sub) типом (работает для D4, D10, D12, и D20s также!).

Другие советы

Вы можете наслаждаться этим симуляцией детского карточная игра войны, который использует экземпляр 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);

С ADA 95 генератор случайных чисел был определен как часть стандартной библиотеки, что делает его обязательным компонентом каждой системы компиляции ADA 95.

Поэтому да, вы можете довольно легко смоделировать 6-кратную кубик в ADA.

Rossetacode.org обычно имеют такие типичные программы. Вы можете найти простую реализацию на 6-м кости в Свинья игра в кости.

Это соответствующие части этой программы для реализации костей.

Вы определяете разыскиваемый диапазон в типе:

type Dice_Score is range 1 .. 6;

создать создание ada.numerics.discrete_random с вашим типом:

with Ada.Numerics.Discrete_Random;

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

Используйте экземпляр, чтобы получить случайное значение в диапазоне:

Gen: RND.Generator; 

P.Recent_Roll := RND.Random(Gen);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top