5.41. mrand 擬似乱数¶
0.0から1.0の範囲の実数の擬似乱数、もしくは範囲指定による整数の擬似乱数を生成し、 a=
パラメータで指定した項目名で出力する。
乱数の生成にはメルセンヌ・ツイスター法を利用している
(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ライブラリ})。
パラメータ¶
i= : 型=str , 任意(default=標準入力)
入力データを指定する。
o= : 型=str , 任意(default=標準出力)
出力データを指定する。
k= : 型=str , 任意(default=キーブレイク処理しない)
指定したキー項目について、同じキー値には同じ乱数値が振られる。
a= : 型=str , 必須
新たに追加される項目の名前を指定する。【但し、-nfn,-nfnoオプション指定時は必要なし】
max= : 型=str , 任意(default=INT_MAX)
乱数の最大値0〜 \(2^{32}\) (約21億)の範囲の整数が指定可能このパラメータを指定するときはint
オプションも指定しなければならない。
min= : 型=str , 任意(default=0)
整数乱数の最小値0〜 \(2^{32}\) (約21億)の範囲の整数が指定可能このパラメータを指定するときはint
オプションも指定しなければならない。
S= : 型=str , 任意(default=現在時刻)
乱数の種同じ乱数の種を指定すれば、同じ乱数系列となる。S=
を指定しなければ、時刻(ミリ(1/1000秒単位)に応じた異なる乱数の種が利用される。指定可能な乱数の種(-2147483648〜2147483647)
int= : 型=bool , 任意(default=False)
整数乱数を生成
共通パラメータ¶
i= , o= , assert_diffSize= , assert_nullkey= , nfn= , nfno= , x= , q= , tmppath= , precision=
利用例¶
importと入力データ(CSV)の準備
1import nysol.mcmd as nm 2 3with open('dat1.csv','w') as f: 4 f.write( 5'''customer 6A 7B 8C 9D 10E 11''') 12 13with open('dat2.csv','w') as f: 14 f.write( 15'''customer 16A 17A 18A 19B 20B 21C 22D 23D 24D 25''')
基本例
0.0から1.0の範囲の実数乱数を生成する。
1nm.mrand(a="rand", i="dat1.csv", o="rsl1.csv").run() 2### rsl1.csv の内容 3# customer,rand 4# A,0.2326046587 5# B,0.8796894355 6# C,0.4733951823 7# D,0.1713104991 8# E,0.9858783041
基本例2
-intで整数乱数
1nm.mrand(a="rand", int=True, i="dat1.csv", o="rsl2.csv").run() 2### rsl2.csv の内容 3# customer,rand 4# A,1960666384 5# B,1548479388 6# C,303832552 7# D,221426400 8# E,1692666423
最小値、最大値を決めた乱数の生成
最小値が10、最大値が100の整数の乱数を生成し、 rand
という項目名で出力する。
1nm.mrand(a="rand", int=True, min="10", max="100", S="1", i="dat1.csv", o="rsl3.csv").run() 2### rsl3.csv の内容 3# customer,rand 4# A,47 5# B,100 6# C,75 7# D,94 8# E,10
キー単位の乱数生成
以下の例は、顧客 A,B,C,D
の4人について同じ顧客には同じ乱数値を振る。
1nm.mrand(k="customer", int=True, min="0", max="1", a="rand", i="dat2.csv", o="rsl4.csv").run() 2### rsl4.csv の内容 3# customer%0,rand 4# A,0 5# A,0 6# A,0 7# B,1 8# B,1 9# C,1 10# D,0 11# D,0 12# D,0
関連メソッド¶
mselrand ランダムに行を選択 : ランダムに行を選択する。
mnewrand 乱数データの新規生成 : 入力データなしに、乱数データを新たに生成する。