题
我已非常明确地遇到了“模拟6面模”(其产生1和6之间的随机整数,所有结果是同样可能的)使用Java,Python,Ruby和击。但是,我还没有看到阿达类似的计划。有没有人遇到过吗?
解决方案
请参阅随机数生成(LRM A.5.2 )的包,以协助这样做。要么Ada.Numerics.Float_Random为均匀随机数生成(范围0.0 .. 1.0),然后可以扩展在自己的,或与合适的(分)实例Ada.Numerics.Discrete_Random键入(适用于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);
使用阿达95,一个随机数生成器被定义为标准库的一部分使其每阿达95编译系统的必需组件。
因此,是可以模拟在阿达6面模具很容易。
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);
不隶属于 StackOverflow