◆メルセンヌツイスター統合スレッド

このエントリーをはてなブックマークに追加
1132人目の素数さん
疑似乱数列で、非常によい均等分布を示す
メルセンヌツイスター(MT法)。

原理と今後の修正課題を語っていこう!
2範義 ◆j0C00luk :02/07/04 23:52
2
3132人目の素数さん:02/07/04 23:52
>>1
スレ立て ミ(゚д゚)ノ オルカレー

メルセンヌツイスターか・・・ いいね!
俺も仕事で使わせてもらっていまつ。
4132人目の素数さん:02/07/05 00:08
確かこれ凄いんだよね?
慶応大の論文だっけ?

詳細きぼんぬ
5132人目の素数さん:02/07/05 00:22
松本先生だよ
今はどこにいるんだっけな
6132人目の素数さん:02/07/05 00:31
というか、このスレ立てたの松本先生じゃないの?
あのお方は2ch好きそうだし。
松本先生は今は広島大学の教授です。
7132人目の素数さん:02/07/05 00:40
メルセンヌツイスターって具体的にどうやって
乱数を発生させてるの?

公式サイト http://www.math.keio.ac.jp/~matumoto/mt.html
に行ってみたけどよくわからなかった・・・

誰か、頭のいい方、馬鹿な僕に説明お願いしますっ!
8132人目の素数さん:02/07/05 00:44
メルセンヌツイスターの原理を数学的知識なしに
理解するのは不可能に近いと思う
http://www.math.keio.ac.jp/~matumoto/math.html
これが理解できないようだったらあきらめろ

とりあえずは
 純粋数学は実におどろくほど役に立っていて、
 人に 非難されるすじあいはない。
を理解してもらえればそれでよし

本当に松本先生がいれば、わかりやすく説明して
くださるかもしれないが
9132人目の素数さん:02/07/05 00:58
メルセンヌ素数って [2^p]-1になる素数のことだっけ?

恥ずかしながら初めて知った。
良スレage
10132人目の素数さん:02/07/05 10:37
線形合同法より(・∀・)イイ!の?
11132人目の素数さん:02/07/05 11:36
はるかに(・∀・)イイ!
12132人目の素数さん:02/07/05 11:39
というか、線形合同法は初期化ルーチンに使われている

http://www.math.keio.ac.jp/~matumoto/faq.html

MTの initializing routineであるsgenrand(seed)は
ただの線形合同法です。
13132人目の素数さん:02/07/05 13:13
平方採中法はどうなの?
てかあれは使い物にならない?
14132人目の素数さん:02/07/05 13:27
線形合同法以下でしょ
歴史的意味しかない
15132人目の素数さん:02/07/05 13:43
こういうことか?

メルセンヌツイスター >>>>>>>>>>>>>> 線形合同法 > 平方採中法

16132人目の素数さん:02/07/05 14:14
線形合同法と平方採中法にはもっと差があるだろ。

線形合同法だって数論から生まれた
アルゴリズムじゃないの?
17132人目の素数さん:02/07/06 15:08
>>16
扇形合同法は割と昔からあるんじゃない?
18132人目の素数さん:02/07/07 02:06
良スレ期待age
19132人目の素数さん:02/07/07 03:30
MTがこの世界のトップだという認識があるのですが…
MTに欠陥が見つからない限りは、MTじゃ足りないってことになんないと
いけないんですよね。
それってどういう状況が考えられるんですか。
20132人目の素数さん:02/07/07 03:31
>>19
カオスみたいに、微小項を無視できない場合とか?
21132人目の素数さん:02/07/07 03:47
>>19
とりあえず、600次元くらいの超球に均等分布するわけだから
十分だと思うけどね。
22132人目の素数さん:02/07/08 18:10
乱数って何に使うの?
さいころとか?
23132人目の素数さん:02/07/08 18:15
代表的な例はモンテカルロシミュレーション
もちろん、さいころを使うゲームのようなものにも使えるだろう

電子化時代の前は、暗号に「乱数表」が使われていたこともあった
けれど、暗号化についてはMTはそのまま使えないことはMTのページ
で注意が喚起されている通り。
24132人目の素数さん:02/07/08 18:38
これって、毎回別々の乱数列を生成するのかな?

C言語のrand()みたいに時間を種に与える?
25132人目の素数さん:02/07/08 19:11
>>24
毎回乱数列を変えたら意味ないじゃん
>>25
え?
賽の目が同じの出たら困るじゃん
>>26
同じ種で、同じ乱数列が出ないと、STGのリプレイや、
オンラインゲームの同期が、出来ないじゃん(W
あくまで「擬似」乱数って事をお忘れずに。

「真」の乱数が欲しかったら、回路のノイズでも拾うしかないよ。

ところで、MTってM系列にありがちな、2本乱数列を走らすと、それに
相関の関係が発生しちゃうのかな? 計算結果眺めてても俺には分からん(W
gauss_rand(){
 const int N = 12; /* 一様乱数の個数 */
 int i;
 sgenrand(time(NULL));             /* 乱数の種設定 */
 double result=0.0;                /* 結果をN個合計する */
 for(i=0;i<N;i++) result+=(genrand());     /* 乱数の合計値 */
 return result-N/2;                 /* 平均値をゼロにする */
}

正規乱数の発生プログラムです。
こういうふうに加工しても性能は落ちませんか?
暗号には使えないと書いてあったので心配です・・・
29132人目の素数さん:02/07/08 21:55
良スレハケーン

>>28
大丈夫だと思いますよ。
それって標準偏差を利用する方法ですよね。

N(m,σ^2) = e/[σ√2π] - (x-m)^2 / 2σ^2 (∵m:平均 σ:標準偏差)

を用いる方法と本質的に同じですか?
30132人目の素数さん:02/07/09 00:51
ソースをここに晒して欲しい。
31132人目の素数さん:02/07/09 11:09
>>27
乱数の初期化については、init_genrand(seed)関数を使う。
これはただの線形合同法であることは、>>12ですでに指摘
されている通り。
seedにどういった値を使うかは、MTとは別の話。

暗号乱数に使えないことはトップページに指摘されている通り。
つまり「暗号化」に必要とされる「計算量理論的安全性」と
MTの特徴である「一様分布性」は別のもの。両者を混同しては
いけない。

両方が必要であれば、2つのアルゴリズムを組み合わせればいい
(たとえばMT+SHR)ということも「FAQ」として書かれている。
32132人目の素数さん:02/07/09 11:13
>>27
最終段落について。

さすがに、2本の乱数列で相関が生じるほど「やわ」なアルゴリズム
ではないと思うよ。
33132人目の素数さん:02/07/11 21:00
Fortran90の組み込み手続きとしての一様乱数は、ナニを使っているんだろう
な?
なぜseedの初期化にそのまま直値を使わずに、線形合同法を用いてるか知ってる?
35シミュレータ見習い ◆DwaBMa7Q :02/07/16 07:37
学部のときに公演にいらして,お話御聞きしました。
論文発表して,さまざまな角度から検証した結果,
現存最高の擬似乱数であることを確信したのに誰も
使ってくれない。

ところが新聞にちょこっと載せたら問い合わせが殺到し,
困ったのでHPを作って対応したら,今度はMTのJAVA版
作りました,何とか版作りましたとメールがパンクになりそう
になったとか。
36132人目の素数さん:02/07/21 03:36
良スレ、age
37132人目の素数さん:02/07/21 17:12
>>36
くそスレあげんなよ、マツモト。
自作自演なのばればれなんだよ。
なんでこんなマイナーな分野のスレで、
知識ある奴が同時に複数出て来るんだよ。
ばればれなんだって。兄弟騒人にいたときは
総人のスレで自作自演してたし。
 ばれてないと思っているの、まつもとだけ。
政治活動やる能力数学につかえ。
38132人目の素数さん:02/07/21 17:18
>>35
>誰も 使ってくれない。
>ところが新聞にちょこっと載せたら問い合わせが殺到し,
これこそ、世界的には注目されていないということを
露呈しているじゃないの。(某小国の会員の若手しかとれない
小さな内輪の賞を立候補してとっている以外は、海外では評価されてない。

手元にある乱数の国際雑誌のサーベイでも、MTなんか乗っていないし、
というか、乱数なんて毎年、沢山のバージョンがでてきてて、そのうちの
単なるひとつにしかすぎないのに。しかももう問題もみつかって古くなって
いるl。
まあ、こんなのは、数学の定理と言うより、工業製品のうちのひとつ
なんだから、すぐに廃れて無価値になっても数年でも日本の一部の人
にだけ使われるだけだって、存在価値はあるけれど、
だからといって、自作自演やられると腹が立つ。
39132人目の素数さん:02/07/22 00:18
>>37
お前が思っている以上に、広く使われているってこった
認識を改めたほうがいいね

もちろん、俺はまつもと先生ではないが
40132人目の素数さん:02/07/22 00:20
ちうか、お前誰だ?
まつもと先生にうらみでもあるのか?

だとしたら、こんなところで非難している時間を
別のところに使えっての
41132人目の素数さん:02/07/22 00:21
ちなみに、俺は数学専門じゃないけど研究で乱数使うときに
松本先生にメールを書いたことはある

だけど、まだ会ったことはない
42132人目の素数さん:02/07/22 00:24
というか、むしろ>>38で指摘しているMTの問題に
ついて教えて欲しい

それから、現在最も優秀な擬似乱数アルゴリズムは
なにか、ということも

そういった書き込みをすれば役に立つ情報になる
よろしく
43132人目の素数さん:02/07/22 00:29
MTはシミュレート屋さんの間では結構好評ですよ。
純粋な数学としての乱数ならそりゃもっと周期が長いのとかあるかも知れないが、
MTほど、処理速度と精度のトレードオフが良いのは、少なくとも俺は知らない。
恐らく手法は区間法に近い方法だと思うが、それをn^2の特性に合せて
作ったのは結構評価したいな、俺としては。

ところで、俺が数学的な話にしようと >>34 で質問投げたのに、
何でだれもレスしてくれないんだよ?(藁
44132人目の素数さん:02/07/22 04:28
http://pc3.2ch.net/test/read.cgi/tech/984182993/742-753

#include<stdio.h>
#define T(u,v) ((((u)&0x8000000|(v)&0x7FFFFFFF)>>1)^((v)&1?0x9908b0df:0))
typedef unsigned long L;L N=623,M=397,K=227,m[624],i;x(L s){m[0]=s;for(i=1;i<N;
i++)m[i]=69069*m[i-1];}n(){for(i=0;i<K;i++)m[i]=m[i+M]^T(m[i],m[i+1]);for(;i<N;
i++)m[i]=m[i-K]^T(m[i],m[i+1]);m[N]=m[M-1]^T(m[N],m[0]);i+=2;}L g(){L y;if(!i--
)n();y=m[624-i];y^=y>>11;y^=(y<<7)&0x9d2c5680;y^=(y<<15)&0xefc60000;return y^(y
>>18);}main(){L a=1000;x(4357);while(a--){printf("%08lx\n",g());}}
45132人目の素数さん:02/07/28 05:06
>>44
キタ━━━(゚∀゚≡(゚∀゚≡゚∀゚)≡゚∀゚)━━━━!!
47 :02/08/03 00:40
ソースをここにアップしてね。
48132人目の素数さん:02/08/04 00:58
49 :02/08/14 02:45
手塚ー伏見のM-系列と比べてどれほどのメリットがあるのか?
また、乱数列をDESなどの暗号化ユニットを通して得られる
乱数列に比べての長所は?

MTの短所とは?
53132人目の素数さん:02/10/15 06:28
ほしゅったらあげろ!
54132人目の素数さん:02/10/16 23:10
MT使って卒研することになりました。記念age
56132人目の素数さん:02/11/17 12:05
記念sage
57132人目の素数さん:02/12/07 05:15
砂嵐が作れなかったのでage
58132人目の素数さん:02/12/14 23:43
やっぱ線形合同法は初期化してもある数列の繰り返しなんですか〜〜?
59山崎渉:03/01/11 12:34
(^^)
61132人目の素数さん:03/01/28 12:24
>>58
アタリマエダロ
62132人目の素数さん:03/01/31 08:46
GNUのGMPの中に取り込まれているみたいだな。
64132人目の素数さん:03/02/27 08:31
65 ◆maSExlovE. :03/03/07 21:00
  
66山崎渉:03/03/13 13:25
(^^)
68132人目の素数さん:03/03/19 09:19
>>58
MTだってある数列の繰り返しなわけだが、繰り返しの周期が
長いというだけ。
69山崎渉:03/04/17 10:02
(^^)
70山崎渉:03/04/20 04:11
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
71132人目の素数さん:03/05/13 05:17
9
72広大理学部数学科2ch支部:03/05/14 02:13
松本先生の講義はわかりやすい支部あげ
73山崎渉:03/05/21 22:40
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
74山崎渉:03/05/21 23:29
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
75山崎渉:03/05/28 15:22
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
76132人目の素数さん:03/06/14 07:48
13
77132人目の素数さん:03/07/08 07:35
12
78山崎 渉:03/07/12 12:43

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
79山崎 渉:03/07/15 12:48

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
80132人目の素数さん:03/08/01 04:14
9
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
82132人目の素数さん:03/08/15 05:19
12
83132人目の素数さん:03/08/21 06:22
20
84132人目の素数さん:03/08/21 15:37
´*:;,. ★ 〜☆・:.,;* http://www.gals-cafe.tv ´*:;,. ★ 〜☆・:.,;*

夏なのにカノジョがいなくてこまってるそこのアナタ!

同じくカレシのいないなつきちゃんに会いにこないっ?

一週間の間、10分間はカクジツにさんごはあなたのもの♪
え?それ以上?それはぁ・・・えへっ(≧▽≦)~~*
アナタがなつきにもっと会いたくなってくれたら、かな☆
ここで待ってるから、必ず来てね!来てくれないなら…おしかけちゃうぞ♪
´*:;,. ★ 〜☆・:.,;* http://www.gals-cafe.tv ´*:;,. ★ 〜☆・:.,;*
85132人目の素数さん:03/10/02 07:47
5
86132人目の素数さん:03/10/28 08:26
11
87132人目の素数さん:03/11/09 06:55
5
17
金融分野でのモデルシミュレートの時、乱数の個数の割にパッケージが
小さいから重宝しています。学生の時に教わってからずーとですね。
90132人目の素数さん:03/12/11 05:56
23
阪大で集中講義してる。
MTって初めて知ったよ。
名前はすごく格好いいよ。
92132人目の素数さん:04/01/04 05:59
3
93132人目の素数さん:04/01/12 09:11
16
94京都はみぞれ交じりの雪:04/01/13 19:27
 今日から京大で集中講義
  >>27にあるような物理乱数の生成機もあるそうです。
宝くじのような再現性があってはいけないものに使用するそうです。
おそろしいことに夏と冬で出力が違ってくるそうです。
おまけ
先生が広大へうつったのは奥様の実家が広島だからとか
95132人目の素数さん:04/01/17 10:44
MT法のメリット、デメリットなど有るのでしょうか。
私的にはPNパターンとかが直ぐに思い浮かぶのですが、
ITUでも色々標準となってますし、
755
97132人目の素数さん:04/02/09 06:21
5
98名無し:04/02/12 03:00
NTPサーバみたいに世界中の乱数を司るサーバって無いの?
99132人目の素数さん:04/03/06 20:48
544
100!!
101132人目の素数さん:04/04/03 08:59
666
893
545