前書き
次の実装でランダムな整数ジェネレータが与えられます
- 最初の呼び出しは常に1を返します。
 - 2番目の呼び出しは、1と2の間のランダムな整数を返します。
 - 3番目の呼び出しは、1〜3のランダムな整数を返します。
 - n番目の呼び出しは、1以上n以下のランダムな整数を返します。
 
上記の関数に基づいて、完全にランダムなランダムダイスジェネレーターを記述し、1から6までの値を等しい確率で返します。
ルール
- プログラム/関数の結果は、1から6までのランダムな整数になり、使用可能な形式で、つまり標準出力に、または関数の戻り値として返されます。
 - 上記の昇順乱数ジェネレーターは、プログラムの「フリー」関数として定義できます(つまり、文字カウントにカウントされません)、または状態(
n)が永続的であると想定して、必要に応じて実行される別のスクリプト/プログラムとして定義できます呼び出しの間。 - プログラムの1つのユースケースで1000を超えるダイスロールが要求されることはないと想定し、最初の乱数ジェネレータ
1を1000のダイスロールの最後にリセットして、のオーバーフローを回避することができますn。 - あなたのプログラムが使用することはできません任意の上記で定義された昇順乱数発生器を除いて、乱数の他のソースを。もちろん、単一のサイコロロール出力ごとに、乱数ジェネレータから複数の乱数を要求することもできます。
 - これはコードゴルフなので、同点の場合、勝者は最短の回答またはほとんどの票です。1000未満の生成された乱数を使用して1000のサイコロを生成できる場合、10ポイントの効率ボーナスを自分に与えます。
 
例
./asc-rand
1 # random integer between 1 and 1
./asc-rand
1 # random integer between 1 and 2
./asc-rand
3 # random integer between 1 and 3
./asc-rand
4 # random integer between 1 and 4
# dice-gen generates random dice based on output of asc-rand program.
./dice-gen
3
./dice-gen
6
./dice-gen
5
./dice-gen
1
          
iterate(6):b=asc-rand(); print b違法ですか、それとも機能しませんか?3番目のルールを誤解しているかもしれません。