質問

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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top