2

在 Java、Python、Ruby 和 Bash 中,我非常明确地遇到了“模拟 6 面骰子”(它产生一个介于 1 和 6 之间的随机整数,所有结果都同样可能)。但是,我还没有在 Ada 中看到类似的程序。有人遇到过吗?

4

4 回答 4

4

请参阅随机数生成 (LRM A.5.2 ) 以获取帮助执行此操作的包。Ada.Numerics.Float_Random 用于统一随机数生成(范围 0.0 .. 1.0),然后您可以自行缩放,或者使用合适的(子)类型实例化 Ada.Numerics.Discrete_Random(适用于 d4、d10、d12、还有 d20s!)。

于 2010-03-09T13:22:31.260 回答
3

您可能会喜欢这种模拟儿童纸牌战争的游戏,它使用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);
于 2010-03-10T05:21:40.827 回答
2

在 Ada 95 中,随机数生成器被定义为标准库的一部分,使其成为每个 Ada 95 编译系统的必需组件。

因此,是的,您可以很容易地在 Ada 中模拟 6 面骰子。

于 2010-03-09T07:16:30.890 回答
0

RossetaCode.org 通常有这类典型程序。您可以在Pig the dice game中找到一个简单的 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);
于 2019-02-11T20:58:51.597 回答