皆様は高校の数学を覚えていますか?
僕は真面目な生徒ではなかったので
あんまり覚えてません
しかし、高校の頃に習った数学を基にスクリプトを書いてみました
コインを投げて表か?裏か?の確率は1/2です
コインを2回投げた時の確率は1/4で表と表
1/4の確率で裏と裏
1/2の確率で表と裏(表と裏、裏と表が1/4づつ)
になります
#何回もコインを投げた時の場合分けの式は覚えてないので
#この辺でやめておきます
表が出た時の値を1、裏が出た時の値を0とすると
何回かコインを投げた時の値の合計は
(確率的に)中心に近いほど多く現れ
端に近いほど、少なくしか現れません
この現象を利用して、中心に近いほど多く現れるrndの処理を書いてみました
処理はびっくりするくらい簡単です
FILE名:FILE_coin_rnd.hsp
TEST
僕は真面目な生徒ではなかったので
あんまり覚えてません
しかし、高校の頃に習った数学を基にスクリプトを書いてみました
コインを投げて表か?裏か?の確率は1/2です
コインを2回投げた時の確率は1/4で表と表
1/4の確率で裏と裏
1/2の確率で表と裏(表と裏、裏と表が1/4づつ)
になります
#何回もコインを投げた時の場合分けの式は覚えてないので
#この辺でやめておきます
表が出た時の値を1、裏が出た時の値を0とすると
何回かコインを投げた時の値の合計は
(確率的に)中心に近いほど多く現れ
端に近いほど、少なくしか現れません
この現象を利用して、中心に近いほど多く現れるrndの処理を書いてみました
処理はびっくりするくらい簡単です
FILE名:FILE_coin_rnd.hsp
#module coin_rnd // 最小値が0で最大値pのcoinを投げたようなrnd #defcfunc local crnd int p r=0;返り値用 // coinをp回投げたようなrndなのでp回繰り返し repeat p // rndの値が1だと加算 r+=rnd(2) loop return r #global |
TEST
#include "FILE_coin_rnd.hsp" // TEST randomize // 結果を格納する配列を用意する dim rr,16 // 何回か試行する repeat 256 // 配列のcrndの返り値の要素に1加算する rr.crnd@coin_rnd(4)+=1 loop // 配列の要素だけ繰り返し foreach rr // 配列の要素(その値が出た回数)を表示 mes ""+cnt+":"+rr.cnt loop stop |