1. michihito_t

    Posted

    michihito_t
Changes in title
+敢えてRubyで学ぶ「ゼロから作るDeep Learning」閑話 Numo::GSLの導入と正規乱数
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,43 @@
+第4章に正規(ガウス)分布の乱数を生成するコードが有る。
+
+## 擬似的に正規分布の乱数を最も簡単に作る方法
+-0.5~0.5の乱数の12回の平均。
+
+```ruby
+def norm_rand
+ random = Random.new()
+ result = 0
+ 12.times do
+ result += random.rand(-0.5..0.5)
+ end
+ result / 12
+end
+```
+
+とはいえ、色々面倒だし、これを使って行列を作るのもなんとも不便。
+そこで、乱数を生成してくれるライブラリ、Numo::GSLを導入する。
+
+## Numo::GSLの導入
+
+基本的にはDockerのRuby上で行っています。
+環境構築に関しては、[敢えてRubyで学ぶ「ゼロから作るDeep Learning」Docker環境構築編](https://qiita.com/michihito_t/items/02e5056764de6d2b7655)をご確認ください。
+
+
+```sh
+# まずは元となるGSLを導入
+$ apt install -y gsl-bin
+# 次にNumo::GSLのgemを導入
+$ gem install numo-gsl
+```
+
+## Numo::GSLでの正規乱数の生成
+
+```ruby
+require 'numo/gsl'
+
+# 標準正規分布のrow * colの行列を作る
+def randn(row, col)
+ r = Numo::GSL::Rng::Rand.new
+ r.gaussian(1, col * row).reshape(col, row)
+end
+```