戻る |
乱数シード設定 |
|
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 |
|
|