GSL で 一様乱数、正規分布

2016-06-22 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での blogramのランクインカテゴリは、
7、2、0、0、0、 1、0、0、0、0(40)で、換算ポイント 87pt 。
「Perl」「化学業界」「硝子業界」「グルコサミン」「FM COCOLO」「e-radio」、
「Python」「Firefox」bg値変動。「C言語」「FM青森」変化無し。
・-・ - -・

さて、本文。

“Lua(GSL Shell)”における“乱数”についての記事は、
4ヶ月前(2016-02-03)の記事「GSL Shell 学習:Random Numbers ( 乱数 )
  ・・・・・
  ・・・・・
  前(2016-02-02)の記事:
  「GSL Shell 学習:matrix.solve( A, b )
  に続く学習。

  今回は、
  「GSL shell documentation」の、
  9章「Random Numbers
  について。
  ・・・・・
  ・・・・・

にあるが、・・・・・


改めて、「GNU Scientific Library - Reference Manual
を見てみると、

  ・ Random Number Generation

  ・ Random Number Distributions

これらは、日本語訳ドキュメント(PDF文書)では、

  ・ 乱数の生成

  ・ 乱数を使った確率分布

とある。


それで、
“一様乱数”の生成と、“正規分布”に従う乱数の生成について、

<紙>流コードをまとめた。
----- “一様乱数”値を5つ生成
gsl = require'gsl'
ffi.cdef[[ gsl_rng_type* gsl_rng_mt19937; ]]
r = gsl.gsl_rng_alloc( gsl.gsl_rng_mt19937 )
gsl.gsl_rng_set( r, os.time() ) ----- シード設定
----------
for i=1,5 do
print( gsl.gsl_rng_uniform(r) )
end
----------
gsl.gsl_rng_free( r )
----- “正規分布”に従う乱数値を5つ生成
gsl = require'gsl'
ffi.cdef[[ gsl_rng_type* gsl_rng_mt19937; ]]
r = gsl.gsl_rng_alloc( gsl.gsl_rng_mt19937 )
gsl.gsl_rng_set( r, os.time() )
----------
mu = 0.1 ----- 標準偏差 ( 平均はゼロ )
for i=1,5 do
print( gsl.gsl_ran_gaussian( r, mu ) )
----- ボックス・ミューラー Box-Mueller 法を使う
end
gsl.gsl_rng_free( r )
となりますか?



ところで、これまでの使用言語ではどうだったか?

過去記事を探してみた。


“Active BASIC”については、
次の“gcc(MinGW)”に関する記事で書いている。
今後、Active BASIC は使わない?


“gcc(MinGW)”では、
6年前(2010-06-06)の記事「C(gcc) 入門(9)乱数
  数値計算シミュレーションと云えば、「乱数」が付きものですね。
  乱数と云えば、メルセンヌ・ツイスタ(Mersenne twister)法ですね。
  それも、「MT19937」でしょうか。

  日本人(松本眞と西村拓士)によって開発された、
  ある意味、最高性能の「擬似乱数生成器」と思っています。

  従来(今でも?)、Active BASIC で使っていた、MT19937 は、
  本家のC言語版を、某氏が、Active BASIC に移植したもの。

  “C(gcc) 入門(5)「gsl」”で「Active BASIC」から2歩(?)離れましたが、

  C(gcc) では、どうしようか?
  本家のC版を使おうか、と勉強していました。
  でも、結構面倒(?)だなと悩んでいました。

  そんなときに、「gsl」にも「乱数」があることに気付き、。
  それを、調べてみると、
  各種の乱数発生手法が用意されており、
  デフォルトでは、MT19937 になっていました。

  これは、使わない手は無い。
  ・・・・・
  ・・・・・


“Perl”と、“R”については、無し?
R はもう使わない? perl で乱数は使わない?


“Python”では、
2年前(2014-04-09)の記事「Python 学習:乱数
  Python では、“乱数”はどうなっているのかを調べた。

  「Python 2.7ja1 documentation」の、
  「ライブラリリファレンス」の、
  「9. 数値と数学モジュール」の、
  「9.6. random - 擬似乱数を生成する
  にある。
  ・・・・・
  ・・・・・


“Julia”については、無し。
もう Julia は使わない?


“Mathematica”は、有償製品で、パス。
今後使うことは無いだろう。


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


160512F,31
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク