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