見出し画像

あみだくじを作る


作品の概要


乱数とくじ

乱数とはある範囲の数値から任意に取り出した数値です。プログラミング言語には種(seed)と呼ばれる値を基にして乱数を取り出す関数が用意されています。種として経過時間など同じ値が現れないものを使って無作為な数値を作るために採用されます。

くじはおおぜいの参加者から一人の役割担当者を選ぶときなどに利用されます。後にくじ引き将軍と呼ばれた足利幕府六代将軍足利義教(あしかがよしのり)はくじ引きによって選ばれました。くじ引きは古来から参加者を選ぶ手段に使われていました。

乱数を使ってガラガラぽん

10人の中から1人を選ぶために9個の赤玉と1個の白玉を入れたガラガラを順番に回して白玉を出した人を当選者とするやり方があります。ガラガラは簡単に用意できません。そこでコンピュータが生成する乱数を使う方法があります。乱数の値を予想するのは困難であるため、ガラガラの代用に使われます。この方法は第一候補だけでなく第二、第三候補を決めるにも利用可能です。

ガラガラと回してポンと出す

無作為をくじに反映させる

乱数をくじに応用する方法はいくつかあります。ここでは乱数から得た数値と取得者をセットにして扱い、小さい順に並び変えます。先頭に並んだものを当選者に決定する方法です。原則はこれに限りますが見た目がシンプルであるため、あみだくじにはもっと多くの乱数を使います。あみだくじでは5人による参加者ならば4つの川にそれぞれ4本の橋をかけるように策定します。原則法では5つの乱数で足りますが、今回は4*(5-1)=16個の乱数でくじを作ります。

コンピュータ処理

乱数を使ってくじを作ったら、今度は引いたくじがどれに紐づくかを決めます。手書きのあみだくじをなぞるように1番のくじからあみだくじのルールに則って引き当てます。ルールは上から下になぞり、横線を左に発見したら左に向かい、右に発見したら右に向かいます。そして縦線に突き当たって下に向かいます。この繰り返しで最下段に達したらこの参加者のくじは決定します。

次の参加者のくじを決めます。最後の参加者に達したら終了です。

あみだくじの使い方

ブラウザがHTMLファイルを読み終えると最初に決定したくじが薄く表示され、alert関数のメッセージ出力後、画面が停止します。決定したくじは目隠しされ中央部分は見えません。ここでくじを引き直すにはブラウザのロードボタンをクリックします。alert画面のOKを押すと実行が再開しますが、その前に誰がどの番号を引いたかを記録に残すことを忘れないでください。

あみだくじ初期画面とくじ引き時に使う目隠し画面

全員のくじの紐づけが確定したら終了で大当たりを引き当てた参加者番号が中央に大きく描画されます。別口のくじを作るにはブラウザのロードボタンクリックから始まります。

終了画面の説明

くじ番号は左から右へ1,2,3…と振ります。最下行の絵柄は固定です。くじを引くたびに絵柄の上の紐づけが変化します。くじの紐づけが完了すると大当たり番号を引いた5番が中央に大きく表示されます。

5人参加のくじは中央を引いた場合を大当たりとする

人数を増やすには

人数が多くなると面白味が増します。川の幅を狭めて画面に収まるように調整します。可変性に関わる定数はプログラムコードにおいて大文字で記述されています。スマホならば横置き画面に合わせるようにします。

乱数を使わない方法

乱数を使わずホワイトボードとインクを使う場合は、参加者ぶんの縦線を描き、それぞれの川の上下に2~3本の横線を描き、中央部を残して覆います。中央部には参加者が適宜、2~3本の横線を付け足します。そして参加者全員にくじを引き行為として、くじ番号を選びます。

自由研究に採用

HTMLコードは有償記事になりますが、購入者の2次使用は自由です。コピーライトも自分用に切り替えて構いません。基盤になるものを入手して細かいところをカスタマイズしていただきたいです。この作品は公開画像の使用もなくコードだけで動作します。

HTMLコード

HTMLコードはcanvasとdiv要素を重ね合わせています。有償記事をコピー&ペーストして自前のデバイスにHTMLファイル形式として移してブラウザで実行させればあみだくじは完成です。

ここから先は

6,698字

¥ 100

期間限定 PayPay支払いすると抽選でお得に!

この記事が気に入ったらサポートをしてみませんか?