質問
Java、Python、Ruby、およびBashで「6フェイスダイをシミュレートする」(1〜6の間のランダムな整数を生成する)に非常に明確に遭遇しました。しかし、私はまだADAで同様のプログラムを見ていません。誰かがそれに出くわしましたか?
解決
乱数生成(LRMを参照してください A.5.2)これを行うのを支援するパッケージ。均一な乱数生成(範囲0.0 .. 1.0)のAda.numerics.float_randomは、自分でスケーリングするか、ada.numerics.discrete_randomを適切な(sub)タイプでインスタンス化できます(d4、d10、d12、for d4、d10、d12、 d20も!)。
他のヒント
子供のこのシミュレーションを楽しむかもしれません 戦争のカードゲーム, 、のインスタンスを使用します 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);
ADA 95では、乱数ジェネレーターが標準ライブラリの一部として定義され、すべてのADA 95コンパイルシステムの必要なコンポーネントになりました。
したがって、はい、ADAで6フェイスのダイを非常に簡単にシミュレートできます。
rossetacode.orgには通常、この種の典型的なプログラムがあります。シンプルな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);
所属していません StackOverflow