パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

プチコン3号講座 検証用プログラムの作成

2015-07-26 | プチコン3、4、BIG
第8回 前回失敗した擬似乱数の作成と検証用プログラムの作成です。

今回は線形合同法を利用しました。

線形合同法


Xn+1 = (A * Xn + B) mod M
前の値にAをかけBを足し、その値をMで割った余りを次の値として繰り返します。



A、B、Mは条件があるようです。
ここでは A=1001、B=9、M=100000としました。
M=10000だと明らかに乱数でない図形が発生します。


擬似乱数の作成コードは定義も含めて5行とシンプル。

<使い方>
RSに初期値を定義
PRND(N)で0~N-1の擬似乱数を作成



検証用プログラム

目的は同じ値が何度で発生するか?
2000回以上を選定し、循環が何回目からの発生か、FORMAT文を使って数値を揃えて表示しています。
(リストの18行目の縦棒はなんでもいいです)

表示結果から判断すると、RSの初期値としては30と41が良さそうです。
追加で30と41を検証したところ、463以内の乱数なら全ての値が発生します。

最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。