「というプログラムを書いてもらったところ、 どうも以下のように考えることが多いようであった (これを方法 A と呼ぶ):個の要素のある配列のうち、乱数を使ってそのうちの
個 (
) をランダムに 1 に、残りを 0 にする」
個の一つをランダムに選び、 そこが 0 ならば 1 として
を一つ増やすが、 そこが 1 ならば何もしない
しかしこの方法 A の場合、 既に 1 であるところにぶつかるとまた乱数を取ってやり直すので、 何回で終わるという保証はないし、 極端な話、乱数があまりよくない乱数である場合には、 かなりの回数がかかってしまう可能性もある。
よって以下のように考えるのがまだいいのではないかと思う (これを方法 B と呼ぶ):
現在 0 の箇所の個から一つをランダムに選び、 そこを 1 として
を一つ増やす
この方法 B なら、もちろん丁度 回で終わるし、
乱数も
回生成するだけで済む。
では、方法 A の場合は、終了するまでだいたい何回位かかるのであろうか。 本稿ではそれを考察してみることにする。
竹野茂治@新潟工科大学