#概要
日本語プログラミング言語「Mind」version 8 用です。
version 8 で小数が使える様になり、自作プログラムで 乱数 が欲しくなり 作りました。
「Mind」のソースコードが どんなものか見てもらいたくもあり 公開します。
#ソースコード
Random.src
※ 乱数種値を指定したい場合には メインの初期化部にて 乱数種値 に値を入れる。
乱数種値は 変数。
簡易小数表示とは (小数 → ・)
5桁で 小数形式で表示すること。
※ 0.0以上~1.0未満 の 乱数を戻す
一様乱数とは 関数 小数出力
Y2は 変数
Y1は 小数変数
※ xorshift32 アルゴリズム
乱数種値を Y2に 入れる
Y2を 13 左シフトし、 Y2と XORし、 Y2に 入れる
Y2を 17 右シフトし、 Y2と XORし、 Y2に 入れる
Y2を 15 左シフトし、 Y2と XORし、 Y2に 入れる
Y2を 乱数種値に 入れる
Y2を 絶対値を 小数化し Y1に 入れる
Y1を 2147483648.0で f割り Y1に 入れる
Y1をもどす
。
ガウス分布乱数とは 関数 小数入力(平均値) 小数入力(シグマ値) 小数出力
シグマ値は 小数変数
平均値は 小数変数
Z1は 小数変数
Z2は 小数変数
Zは 小数変数
シグマ値に 入れる
平均値に 入れる
※ 「引数 (」を 表示し、 平均値を 簡易小数表示し、 「 , 」を 表示し、 シグマ値を 簡易小数表示し、 「)」を 表示し、 改行
Zを クリア
一様乱数()を Z1に 入れる
一様乱数()を Z2に 入れる
[ Z := sqrt( -2.0 × log(Z1) ) × sin( 2.0 × π × Z2 ) ]
[ Z := 平均値 + シグマ値 × Z ]
Zをもどす
。
※-- テスト用 --
メインとは
※Random_テスト_メインとは
乱数値は 小数変数
20170316を 乱数種値に 入れる
「乱数種値:」を 表示し、 乱数種値を 数値表示し、 改行
50を 回数指定し
乱数値を クリア
ガウス分布乱数( 0.0 , 0.5 )を 乱数値に 入れる
※ 一様乱数()を 乱数値に 入れる
「関数戻り値:」を 表示し、 乱数値を 簡易小数表示し、 改行
繰り返す
スタック検査し
。
アルゴリズムのメモ書き的な 疑似コードにみえるかと思われますが 動くのですよ これ。
#参考サイト
Mind プログラミングマニュアル
Google Chromeが採用した、擬似乱数生成アルゴリズム「xorshift」の数理
C言語による乱数生成