Моделирование шестигранной кости в Аде-2005

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


ada
person Arkapravo    schedule 09.03.2010    source источник


Ответы (4)



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

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

Поэтому да, вы можете довольно легко смоделировать шестигранную кость в Аде.

person Mitch Wheat    schedule 09.03.2010
comment
Наверное, поэтому он и не сталкивался с таким. Было бы слишком тривиально возиться с этим. - person T.E.D.; 09.03.2010
comment
Может быть, T.E.D ..... однако, что самое удивительное, я даже не сталкивался с какой-либо стохастической структурой, программируемой на Аде. - person Arkapravo; 10.03.2010
comment
Не знаю, что тебе сказать, чувак. Одной из первых вещей, которые я написал на Аде в 1989 году, был генератор случайных чисел. К сожалению, я взял алгоритм из учебника и на самом деле не исследовал влияние предоставленного интерфейса на алгоритм. Оказалось, что если вы запросили случайное значение с достаточно малым диапазоном (я думаю, это было 0-3), оно чередовалось между двумя результатами. Поэтому такие вещи лучше доверить специалистам. :-) - person T.E.D.; 10.03.2010
comment
Фу! ..... кажется, Ада также выполняла некоторую параллельную обработку в рандомизации .... T.E.D, если вы найдете эту программу, пожалуйста, пришлите ее ! ... :) - person Arkapravo; 11.03.2010

На RossetaCode.org обычно есть такие типовые программы. Вы можете найти простую реализацию шестигранной кости в Игра в кости.

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

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

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);
person Gneuromante    schedule 11.02.2019