Help us understand the problem. What is going on with this article?

敢えてRubyで学ぶ「ゼロから作るDeep Learning」閑話 Numo::GSLの導入と正規乱数

第4章に正規(ガウス)分布の乱数を生成するコードが有る。

擬似的に正規分布の乱数を最も簡単に作る方法

-0.5~0.5の乱数の12回の平均。

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環境構築編をご確認ください。

# まずは元となるGSLを導入
$ apt install -y gsl-bin
# 次にNumo::GSLのgemを導入
$ gem install numo-gsl

Numo::GSLでの正規乱数の生成

require 'numo/gsl'
require 'numo/narray'

## 標準正規分布のrow * colの行列を作る
def randn(row, col)
  r = Numo::GSL::Rng::Rand.new
  r.gaussian(1, row * col).reshape(row, col)
end

追記 Numo::Narrayから正規乱数の生成

@kojix2 さんよりコメント頂きました、Numo::NArrayで正規乱数を作る方法も記載しておきます。

require 'numo/narray'

# 標準正規分布のrow * colの行列を作る
# rand_norm = rand_norm(0,1) 平均0、標準偏差1の標準正規分布
Numo::DFloat.new(row,col).rand_norm
michihito_t
地方で生きていきたいWebエンジニア。地方移住や暮らし方、そしてAI等を勉強中。昔はGoogle Analyticsとかをかつかつチューニングしていた。今でもそこそこGoogle Tag Managerやアクセス解析も行う。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした