乱数ジェネレータ
さまざまな事象のシミュレーションには、乱数の生成が欠かせません。単純な乱数であればrpnにも備わっていますが、その他の複雑な乱数は個別に計算しなければなりません。
そこで、rpnマイスターパッケージに代表的な乱数を生成させるプログラムを用意しました。乱数の有効桁数はそれほど多くありませんが、ビジネスの現場で利用する分には申し分ないでしょう。
乱数を生成する元になる確率分布の名称、および乱数の数値例、そして度数分布(1000回の乱数発生)を示します。理論的な分布とのズレは起こりますが、試行回数を増やせば理論値に近づくことになります。ばらつきも含めて乱数の仕様として参照ください。
一様分布 [離散確率分布]
発生確率が均等な場合のrpn式とグラフです。
0.51
0.748
0.102
0.606
0.402
>rpn -c rand-uni -r 1000 | rpn 10 * i 1 + | rpn -c freq >tmp
>xyp -x,10 -y,200 -s1 -m <tmp
^y 200
|
|
|
|
|
| * * *
| * * * *
| * * *
|
|
|
|
| x
|o 10
+--|---|---|---|---|---|---|---|---|--->
二項分布 [離散確率分布]
試行回数が10回、発生確率が50%の場合のrpn式とグラフです。
6
6
5
7
5
>rpn 10 .5 -c rand-bin -r 1000 | rpn -c freq >tmp
>xyp -x,10 -y,300 -s1 -m <tmp
^y 300
|
|
| *
| * *
|
|
|
| *
| *
|
|
| *
| * x
|o * * 10
+--|---|---|---|---|---|---|---|---|--->
幾何分布 [離散確率分布]
発生確率が50%の場合のrpn式とグラフです。
4
1
1
2
5
>rpn .5 -c rand-geo -r 1000 | rpn -c freq >tmp
>xyp -x,10 -y,500 -m -s1 <tmp
^y *00
|
|
|
|
|
|
|
| *
|
|
| *
|
| * * x
|o * * * * 10
+--|---|---|---|---|---|---|---|---|--->
ポアソン分布 [離散確率分布]
平均が10の場合のrpn式とグラフです。
12
10
8
16
5
>rpn 10 -c rand-poi -r 1000 | rpn -c freq >tmp
>xyp -x,20 -y,200 -s1 -m <tmp
^y 200
|
|
|
| *
|
| * *
| * * *
|
| *
| *
| *
| * *
| * * * x
** * * * *2*
+|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|->
ガウス分布(正規分布) [連続確率分布]
平均が0、分散1の場合のrpn式とグラフです。
-0.79
-0.031
-0.839
-0.071
0.375
>rpn -c rand-gau -r 1000 | rpn 10 * i 10 / | rpn -c freq >tmp
>xyp -x-4,4 -y,50 -m <tmp
y^50
|
* *
** *| *
|**
** * *
* ** **
** | **
* | *
* ** | *
|
* | ***
** | *
** | * * x
-4 **** |o ** **** * 4
--------------------+------------------>
有効桁数が少ないのが難点ですが、数種類試した正規分布乱数のアルゴリズム中で平均値と分散値が最も理論値に近いものを採用しています。
指数分布 [連続確率分布]
平均が1の場合のrpn式とグラフです。
1.90381
0.939048
0.202116
0.908819
0.74444
>rpn -c rand-exp -r 1000 | rpn 10 * i 10 / | rpn -c freq >tmp
>xyp -x,5 -y,100 -m <tmp
*y 100
|
**
|
| *
| *
| *
|
| ****
| ***
| *
|
| ***** *
| ** **** x
|o * ***** * ** *****
+-------------------------------------->
t分布 [連続確率分布]
自由度が10の場合のrpn式とグラフです。
0.392453
0.975613
-2.21895
0.552137
0.28542
>rpn 10 -c rand-t -r 1000 | rpn 10 * i 10 / | rpn -c freq >tmp
>xyp -x-4,4 -y,50 -m <tmp
*y*50
|
*|
* *
***
| *
** ** | *
* * |*
* | *
* | * **
* | **
** | **
** | ***
** ** | *** x
-********* |o **** * *
--------------------+------------------>
χ2乗分布 [連続確率分布]
自由度が10の場合のrpn式とグラフです。
11.0377
8.63233
7.88369
15.2025
4.35703
>rpn 10 -c rand-chi -r 1000 | rpn 10 * i 10 / | rpn -c freq >tmp
>xyp -x,25 -y,25 -m <tmp
^y 25
|
|
|
| *
|
| *****
| **** * *
| * ** ** *
| * *** ** ******
| **** * ****** ** *
| *** * ***** *
| ** * * ** ******* *
| ***** * * * ******* * * * x
|o *** * ***** ****** *5
+-------------------------------------->
F分布 [連続確率分布]
自由度が2と2の場合のrpn式とグラフです。
1.42712
1.16702
66.7558
0.500114
0.248617
>rpn 2 2 -c rand-f -r 1000 | rpn 10 * i 10 / | rpn -c freq >tmp
>xyp -x,50 -y,25 -m <tmp
*y 25
|
|
*
**
|*
|*
|
|**
| *
|***
| *
|***** *
|************ ** * x
|o ******************* ** *** * * 50
+-------------------------------------->
ロジスティック分布 [連続確率分布]
平均が0、分散がπ*π/3の場合のrpn式とグラフです。
-0.510826
-5.51745
0.11613
-1.23676
3.54715
>rpn -c rand-log -r 1000 | rpn 10 * i 10 / | rpn -c freq >tmp
>xyp -x-5,5 -y,50 -m <tmp
y^50
|
|
|
|
*
* **
* **|*
*** *|****
* **** * **
* * * |* * * *
*** | **
**** | *** * *
**** | ** *** x
*5****** |o ************
--------------------+------------------>
今後、使用頻度の高い乱数発生器を新規に追加する可能性があります。
本講座で使用したプログラムは、rpnマイスターパッケージとして購入することができます。xypとnpdはrpnの姉妹ソフトウェアです。詳しくはプロダクトを参照ください。