皆様は高校の数学を覚えていますか?
僕は真面目な生徒ではなかったので
あんまり覚えてません
しかし、高校の頃に習った数学を基にスクリプトを書いてみました

コインを投げて表か?裏か?の確率は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