乱数ジェネレータ | package入門(rpnマイスター編) [講座] | 逆ポーランド電卓の実践ウェブ rpn hacks!

逆ポーランド電卓の実践ウェブ rpn hacks!

逆ポーランド電卓rpnの実践ウェブ   
rpn hacks! アールピーエヌ・ハックスサイトマップ

rpn | 講座 | package入門 | ポテンシャルを飛躍的に高めるrpnパッケージを学習。

HOME > 講座 > package入門 > rpnマイスター編 > 乱数ジェネレータ

hatena twitter facebook rss ソーシャルブックマーク

乱数ジェネレータ

 さまざまな事象のシミュレーションには、乱数の生成が欠かせません。単純な乱数であればrpnにも備わっていますが、その他の複雑な乱数は個別に計算しなければなりません。

そこで、rpnマイスターパッケージに代表的な乱数を生成させるプログラムを用意しました。乱数の有効桁数はそれほど多くありませんが、ビジネスの現場で利用する分には申し分ないでしょう。

確率分布一覧  

警告乱数を生成する元になる確率分布の名称、および乱数の数値例、そして度数分布(1000回の乱数発生)を示します。理論的な分布とのズレは起こりますが、試行回数を増やせば理論値に近づくことになります。ばらつきも含めて乱数の仕様として参照ください。


一様分布 [離散確率分布]  

 発生確率が均等な場合のrpn式とグラフです。

  >rpn -c rand-uni -r 1000 | rpn 5 -c head
  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
  +--|---|---|---|---|---|---|---|---|--->

確率分布一覧に戻るLinkIcon

二項分布 [離散確率分布]  

 試行回数が10回、発生確率が50%の場合のrpn式とグラフです。

  >rpn 10 .5 -c rand-bin -r 1000 | rpn 5 -c head
  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
  +--|---|---|---|---|---|---|---|---|--->

確率分布一覧に戻るLinkIcon

幾何分布 [離散確率分布]  

 発生確率が50%の場合のrpn式とグラフです。

  >rpn .5 -c rand-geo -r 1000 | rpn 5 -c head
  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
  +--|---|---|---|---|---|---|---|---|--->

確率分布一覧に戻るLinkIcon

ポアソン分布 [離散確率分布]  

 平均が10の場合のrpn式とグラフです。

  >rpn 10 -c rand-poi -r 1000 | rpn 5 -c head
  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*
  +|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|->

確率分布一覧に戻るLinkIcon

ガウス分布(正規分布) [連続確率分布]  

 平均が0、分散1の場合のrpn式とグラフです。

  >rpn -c rand-gau -r 1000 | rpn 5 -c head
  -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
  --------------------+------------------>


有効桁数が少ないのが難点ですが、数種類試した正規分布乱数のアルゴリズム中で平均値と分散値が最も理論値に近いものを採用しています。

確率分布一覧に戻るLinkIcon

指数分布 [連続確率分布]  

 平均が1の場合のrpn式とグラフです。

  >rpn -c rand-exp -r 1000 | rpn 5 -c head
  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               *    ***** * **   *****
  +-------------------------------------->

確率分布一覧に戻るLinkIcon

t分布 [連続確率分布]  

 自由度が10の場合のrpn式とグラフです。

  >rpn 10 -c rand-t -r 1000 | rpn 5 -c head
  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         **** *  *
  --------------------+------------------>

確率分布一覧に戻るLinkIcon

χ2乗分布 [連続確率分布]  

 自由度が10の場合のrpn式とグラフです。

  >rpn 10 -c rand-chi -r 1000 | rpn 5 -c head
  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
  +-------------------------------------->

確率分布一覧に戻るLinkIcon

F分布 [連続確率分布]  

 自由度が2と2の場合のrpn式とグラフです。

  >rpn 2 2 -c rand-f -r 1000 | rpn 5 -c head
  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
  +-------------------------------------->

確率分布一覧に戻るLinkIcon

ロジスティック分布 [連続確率分布]  

 平均が0、分散がπ*π/3の場合のrpn式とグラフです。

  >rpn -c rand-log -r 1000 | rpn 5 -c head
  -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      ************
  --------------------+------------------>

確率分布一覧に戻るLinkIcon

情報今後、使用頻度の高い乱数発生器を新規に追加する可能性があります。

情報本講座で使用したプログラムは、rpnマイスターパッケージとして購入することができます。xypとnpdはrpnの姉妹ソフトウェアです。詳しくはプロダクトを参照ください。

rpnマイスターパッケージ

マイスター

ユーティリティー

カレンダー

警告文字で作られた図表や式が崩れることがあります。ブラウザによっては固定幅フォントをMSゴシックにするときれいに表示されます。それでも崩れる場合は図表や式をメモ帳にコピー後、閲覧下さい。

警告rpn標準版(2kリビジョン)はダブルクォートで囲って下さい。

rpn 1 2 + ⇒ rpn "1 2 +"
rpn 1 -c foo ⇒ rpn "1" -c "foo"

ダブルクォートは省略できることが多いのですが、慣れない間は囲んだほうが無難です。なお、本ウェブサイトの記事ではrpn標準版(98リビジョン)を使用しているため囲っていません。詳しくは技術サポートの「rpn TIPS」を参照ください。

注意rpnの障害情報と対策はこちら