$M$から$N$までの自然数の乱数を生成するには、 $M=B$ $N=A+B-1$ を$A$と$B$について解いて、 $A=N-M+1$ $B=M$ を得る。従って、 Math.floor(Math.random()*(N-M+1)+M)
と書けば良い。(ここで Math.floor() は小数点以下切り捨て関数である。) ちなみに一天地六のサイコロの場合は、 Math.floor(Math.random()*6+1)
|
![]() |
有限区間(例えば1〜100)に想定された整数解を言い当てるゲームで、解答者は自分の答えに対して正解がそれよりも大きい/小さい場合に応じて、「正解はそれよりも大きい/小さいです」というヒントが得られる。もちろん正解を答えたときには「正解です。」と知らされる。できるだけ少ない解答回数で正解に至ることを競うゲームである。
フローチャートを段階的に改変しながら完成版まで作成し、コーディング(ソースプログラム作成)しても良いし、段階的な仕様のプログラムを実際に開発しながら、仕様を完成版にまで持って行っても良い。
☆ヒント:完成版の仕様においても、ループ構造を2重にする必要はありません。
木札のコマ(最初は10枚?)を持っている。
壷振りが2個のサイコロを壷の中で振る。
持ちコマの中から、丁(目の和が偶数)か半(目の和が奇数)に張る(賭ける)。
(本来はここで丁方と半方のコマの合計のバランスを取る。)
壷を開いて、外れていたらコマは胴元に没収され、当っていれば倍になって戻ってくる。
(理論的には寺銭が無い場合の儲けの期待値は±0である。)
持ちコマが無くなったら終了!
(赤と黒だけでルーレットをするのと原理的には同じですが...)
...という所で、表示される文章などの仕様の詳細も考えて、フローチャートを作成して実現してみて下さい!