루비로 다양한 확률 분포의 무작위 수를 생성하여 직사각형을 그려보았다

개시하다



다양한 확률 분포에 따라 랜덤수를 만들면 누구나 직사각형을 그리고 싶은 날이 있다.
괜찮습니다.언제나 세계의 뛰어난 프로그래머들은 우리를 위해 놀라운 프로그램 라이브러리를 만들어 준다.유명하지 않은 도서관이라도 잘 쓰게 되면 마법 같은 것도 쉽게 완성된다.
이 글은 두 개의 훌륭한 루비 라이브러리를 소개했다.Numo::GSLFlammarion.이를 사용하면 무작위 수를 간단하게 생성하고 직사각형을 그릴 수 있다.

준비 편


설치가 좀 번거로우니 건너뛰고 마지막에 다시 돌아와 보십시오.
Numo: GSL 및 Flumian 설치

Numo: GSL 설치


Numo::GSL는 GNU Scientific Library(GSL)의 바인딩입니다.루비계에는 GSL과의 바인딩이 많지만 나리의 활용을 고려해 이걸 사용했습니다.
2019/5 현재 Numo: GSL은 GSL2입니다.4 이후 대응이 없다.따라서 많은 환경에서 원본 코드에서 GSL2까지.설치해야 합니다.따라서 시간이 좀 걸리겠지만 그만큼 가치가 있다.다음 느낌대로 명령을 내리면 됩니다.공식 홈페이지다운로드 페이지부터 gsl-2.3.tar.gz를 다운로드합니다.
내 생각엔.. 하지만 우분투sudo apt install libgsl23에서도 하기만 하면 되는 일이 있는 것 같아.
wget http://ftp.jaist.ac.jp/pub/GNU/gsl/gsl-2.3.tar.gz
tar -zxvf gsl-2.3.tar.gz
cd gsl-2.3
./configure
make -j4 # CPUコア数を指定

# checkinstallを使う場合
sudo checkinstall

# インストール場所を自分で指定する場合
# make DESTDIR=/path/you/want/to/install/ install
# Githubからnumo-gslを取得
git clone https://github.com/ruby-numo/numo-gsl
cd numo-gsl
rake build
gem install pkg/numo-gsl-0.1.2.gem # -- --with-gsl-lib=usr/local/lib

# GSLのインストール場所を自分で指定する場合
# gem install pkg/numo-gsl-0.1.2.gem -- --with-gsl-lib=/path/you/want/to/install/usr/local/lib

Flamarion 설치


루비로 차트를 표시하는 방법에는 여러 가지가 있다.
하지만!여기서 일부러 아무도 모르는 작은 방법인 Flamarion을 사용하여 ploty를 사용한다.Flamarion은 Chrome과 electron의 GUI 도구 세트에 재미있는 기능이 많이 들어 있는 가장 좋은 도구입니다.Plattly를 통한 차트 표시 기능도 그 중 하나입니다.Flamarion에 관해서는 다른 기회를 이용해서 신청서를 쓰고 싶습니다.Flamarion의 개발은 계속되고 있지만 업데이트가 조금 지연됩니다.저만 그런 사람이라고 생각해요. 미용을 하는 게 좋을 것 같아요.
https://github.com/zach-capalbo/flammarion
gem install flammarion
가동irb 또는 pry, Flamation과 Numo:GSL을 준비합니다.
require 'flammarion'
require 'numo/gsl'
f = Flammarion::Engraving.new
r = Numo::GSL::Rng::Rand.new
여기서부터는 간단해.

이원 분포

a = r.binomial(0.5, 100, 10000).to_a
f.plot(x: a, type: "histogram")

파송 분포

a = r.poisson(3, 10000).to_a
f.plot(x: a, type: "histogram")

베누리 분포

a = r.bernoulli(0.3,10000).to_a
f.plot(x: a, type: "histogram",
       autobinx: false, xbins: {start:0, end:1.1, size: 0.1})

지수 분포

a = r.exponential(2,10000).to_a
f.plot(x: a, type: "histogram")

감마 분포

a = r.gamma(5,1,10000).to_a
f.plot(x: a, type: "histogram")

베타 분포

a = r.beta(0.5,0.5,10000).to_a
f.plot(x: a, type: "histogram")

정적 분포

a = r.gaussian(0.2,10000).to_a
f.plot(x: a, type: "histogram")

이렇게 하면 간단하게 도표를 그릴 수 있다.
GSL 함수를 사용할 수 있기 때문에 분포된 직사각형을 대충 그릴 수 있겠죠.
Flamarion의 테이블 기능을 사용하여 r에 등록된 메소드 차트를 표시합니다.
f.table( (r.methods - Object.methods).each_slice(5).to_a)

이렇게 많이 준비한 거 알아요.
뭐야, 루비도 쉽게 할 수 있잖아.
참고와 문헌이 매우 적어서 찾기가 매우 번거롭다.
이상은 이 보도입니다.

좋은 웹페이지 즐겨찾기