8.10. berrand ベルヌーイ乱数

  • 書式1: berrand(確率,[乱数の種])

ベルヌーイ分布 \(f(x)=p^x(1-p)^{1-x} x=0,1\) について、指定された確率 \(p\) における \(x\) の乱数を生成する。 本関数では、 \(x=0\) をfalse、 \(x=1\) をtrueとした論理型として値を返す。 また確率 \(p\) は定数としてのみ指定可能で、項目名を指定することはできない。 同じ乱数の種を指定すれば、同じ乱数系列となる。 指定可能な乱数の種の範囲は-2147483648〜2147483647である。 乱数の種を省略すると、 時刻(1/1000秒単位)に応じた異なる乱数の種が利用される。 乱数の生成にはメルセンヌ・ツイスター法を利用している (href{http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html}{原作者のページ} , href{http://www.boost.org/doc/libs/1_54_0/doc/html/boost_random.html}{boostライブラリ})。

利用例

importと入力データ(CSV)の準備

 1import nysol.mcmd as nm
 2
 3with open('dat1.csv','w') as f:
 4  f.write(
 5'''id
 61
 72
 83
 94
10''')

基本例

確率$p=0.2$のベルヌーイ乱数を生成する。 乱数の種を指定しているので、何度実行しても同じ乱数系列が生成される。

1nm.mcal(c='berrand(0.2,111)', a='rand', i="dat1.csv", o="rsl1.csv").run()
2### rsl1.csv の内容
3# id,rand
4# 1,0
5# 2,1
6# 3,1
7# 4,0

0,1の整数乱数

0と1の2種類の整数乱数を生成する。 乱数の種を指定していないので、実行の度に異なる乱数系列が生成される。

1nm.mcal(c='randi(0,1)', a='rsl', i="dat1.csv", o="rsl2.csv").run()
2### rsl2.csv の内容
3# id,rsl
4# 1,1
5# 2,1
6# 3,0
7# 4,0