>10%くらいになるのが正しいと思うのですが、
>時々出現率が11~12%ぐらいになることがあったので・・・
まったく意味のないことですが、rnd関数で0から9までの数をランダムに得て、各数字の出現確率を計算するサンプルを以下に示します。
; サンプルその1。
; rnd関数で0~9の数をランダムに得て、
; その出現確率を計算する。
#const num 100
; この100という数値が計測回数を表す。
; 変更するときは1以上の整数にすること。
; 負数を指定すると無限ループになり、
; 0を指定すると0除算のエラー、
; 小数値を指定するとおかしな結果になる(当然)。
randomize
dim count, 10 ; カウント保持用配列変数
repeat num ; 計測回数分繰り返す
count(rnd(10)) ++ ; カウントアップ
loop
mes "計測回数 : " + num + "回"
repeat 10
mes "" + cnt + "の出現確率 : " + strf("%g %%",double(count(cnt))*100/num)
loop
計測回数が少ないうちは理想の値(10%)から大きくはずれることもありますが、計測回数が1000、10000を超えるぐらいからだんだん10%に近づいていきます。
次に、じったさんの方法で各数字の出現確率を変え、その出現確率を計算してみます。
; サンプルその2。
; 事前に要素を設定しておいてから、
; rnd関数で要素をランダムに選び出し、
; 出現確率を計算する。
#const num 100
; この100という数値が計測回数を表す。
; 変更するときは1以上の整数にすること。
; 負数を指定すると無限ループになり、
; 0を指定すると0除算のエラー、
; 小数値を指定するとおかしな結果になる(当然)。
randomize
dim count, 10 ; カウント保持用配列変数
dim element, 20 ; 要素格納用配列変数
element = 0,0,0,0,0,1,1,1,1,2,2,2,3,3,4,5,6,7,8,9
repeat num ; 計測回数分繰り返す
count(element(rnd(20))) ++ ; カウントアップ
loop
mes "計測回数 : " + num + "回"
repeat 10
mes "" + cnt + "の出現確率 : " + strf("%g %%",double(count(cnt))*100/num)
loop
きちんと出現確率が変化しているのがわかります。
また、このときも、計測回数が十分に多いときは、理想の値に近い数値が出るのがわかります。