モド 乱数シード設定
Declare PtrSafe Function seed_Engine Lib "mapM.dll" _
                                    (Optional ByRef seedN As Variant) As Long
 
ここで定テイギ義しランスウ数関カンスウを使シヨウ用すマエ前に1カイ出す
? seed_engine(5 + 6)
11
seed省略時もしくは整数として評価できないときは seed_gen によって設定セッテイする。
std::random_device seed_gen;
? seed_engine()
-701731034
 
ツウジョウは省ショウリャク略でいい。同じ乱ランスウレツを発ハッセイ生させるためにオナアタイ値をseed_engineアタ与える。
一様整数(Long) 乱数の生成
     (個数, from, to)
Declare PtrSafe Function uniform_int_dist Lib "mapM.dll" _
                                    (ByVal n As Long, _
                                ByVal fromN As Long, _
                            ByVal toN As Long) As Variant
 
    Function p_uniform_int_dist(
 
printM  uniform_int_dist(12, 9, 121)    範囲ハンイ[9, 121]にある整数セイスウ一様イチヨウ乱数ランスウを12
  119  55  20  37  40  37  77  24  60  36  96  82
? uniform_int_dist(0, 0, 12345)    ←0個以下イカ指定シテイすると配列ハイレツでなく単一タンイツアタイられる
7509
モド
一様実数(Double) 乱数の生成
     (個数, from, to)
Declare PtrSafe Function uniform_real_dist Lib "mapM.dll" _
                                        (ByVal n As Long, _
                                    ByVal fromD As Double, _
                                ByVal toD As Double) As Variant
 
    Function p_uniform_real_dist(
正規分布
    (個数, 平均, 標準偏差)
Declare PtrSafe Function normal_dist Lib "mapM.dll" _
                                    (ByVal n As Long, _
                                ByVal mean As Double, _
                            ByVal stddev As Double) As Variant
 
    Function p_normal_dist(
Bernoulli分布
     (個数, 発生確率)
Declare PtrSafe Function bernoulli_dist Lib "mapM.dll" _
                                    (ByVal n As Long, _
                                ByVal prob As Double) As Variant
 
    Function p_bernoulli_dist(
モド
離散分布
    (個数N, 発生比率配列)
    発生比率は非負の実数、合計が 1 にならなくても可
    返り値は長さ N の配列で、各要素は 0〜sizeof(発生比率配列)-1 の整数
    整数iの発生比率 〜 Pi となる分布(ただし LBound(Pi) = 0 と仮定)
Function discrete_dist(ByRef n As Variant, ByRef probs As Variant) As Variant
 
    Function p_discrete_dist(
 
printM discrete_dist(30, Array(1,3,5))
  2  2  0  2  2  1  1  1  1  1  2  0  1  2  0  2  1  2  2  2  1  0  2  2  0  2  1  2  0  1
母集ボシュウダン団30、   {0, 1, 2} の出シュツゲン現割ワリアイ合がそれぞれ 1 : 3 : 5
iotaのランダム版(from_iからto_iまでの自然数をランダムに並べたベクトル)
Function random_iota(ByVal from_i As Long, ByVal to_i As Long) As Variant
 
printM random_iota(10, 29)
  13  27  19  11  18  17  20  10  23  28  29  22  14  25  15  24  21  16  12  26
(チョウフク漏れはない)
配列の要素をランダムに並び替えた配列を出力
Function random_shuffle(ByRef vec As Variant, Optional ByRef dummy As Variant) As Variant
 
    Function p_random_shuffle(
 
m = Array(1, 2, 3, 4, 5, 6, "A", "B", "C", "D", "E")
printM random_shuffle(m)
  4  2  5  E  1  C  3  6  A  B  D