我已非常明确地遇到了“模拟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);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top