LoginSignup
4
1

More than 5 years have passed since last update.

Mind言語で 疑似乱数関数 を作ってみた

Last updated at Posted at 2017-03-17

概要

日本語プログラミング言語「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言語による乱数生成

4
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1