- 1 名前:デフォルトの名無しさん mailto:sage [2006/04/27(木) 02:19:35 ]
- 擬似乱数発生器について語ろうか。
- 331 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 15:13:12 ]
- >>327
人間に2回何かさせる。
- 332 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 15:15:11 ]
- >>327
原理的に不確定要素が必要だから、何とかするしかない。 メモリ状態、ユーザの入力、CPUjの状態、 それでもダメなら種を予め手入力しておく。
- 333 名前:327 mailto:sage [2006/11/23(木) 16:19:37 ]
- やはり不確定要素が必要なのですね
アドバイスありがとうございました
- 334 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 20:23:10 ]
- そこでUSBガイガーカウンタですよ。
- 335 名前:デフォルトの名無しさん mailto:sage [2006/11/26(日) 12:39:36 ]
- 擬似乱数の萌え擬人化希望
- 336 名前:デフォルトの名無しさん mailto:sage [2006/11/26(日) 17:18:11 ]
- > メモリの状態も常に一定
ずっとHLTでもしてるのか?
- 337 名前:デフォルトの名無しさん mailto:sage [2006/11/26(日) 18:21:36 ]
- >>336
初期値がクリアされているシングルスレッドではないかと・・・ いや、やっぱずっとHLTかな・・・
- 338 名前:デフォルトの名無しさん mailto:sage [2006/11/28(火) 05:08:43 ]
- >>332
昔と違ってOSが動いているPCなら普通に不確定要素のタイミングで 動いている。 CPUコアのリヤルタイムクロックとアイドリングで動くカウンター要素 等を組み合わせても不確定要素を簡単に抽出可能だろ。 ワンチップマイコンや電子回路程度では話は変わってくるだろうけどな
- 339 名前:デフォルトの名無しさん mailto:sage [2006/11/28(火) 05:11:25 ]
- 時計もないしメモリの状態も常に一定の環境
- 340 名前:デフォルトの名無しさん mailto:sage [2006/11/28(火) 08:05:30 ]
- リヤルタイム
- 341 名前:デフォルトの名無しさん mailto:sage [2006/11/28(火) 13:50:36 ]
- >>334
プーチン政権を批判するロシア人に持たせれば 良質な乱数が作れそうだな。
- 342 名前:デフォルトの名無しさん mailto:sage [2006/11/28(火) 14:57:40 ]
- >>341
All1で乱数にならない罠。
- 343 名前:デフォルトの名無しさん mailto:sage [2006/11/29(水) 16:51:41 ]
- 擬似乱数なんてストリーム暗号の出力使えばいいじゃん
- 344 名前:デフォルトの名無しさん mailto:sage [2006/11/30(木) 12:06:53 ]
- マリーアントワネット様キタ
- 345 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 22:43:18 ]
- >>325
>で、おまいらがほしい乱数とは、数値が連続せず、どの数値も同じ確立に >なりやすい擬似乱数だろ? このへんが少し困るところだよな。 人によっては(もしかするとかなり多くの人が)その方がランダムだと 思っちゃうんだよな。 もしサイコロで6が5回位続いたら仕込んであると怪しまれそう。 同じ目が続かない方が乱数としてはおかしいんだけどな。 短周期で目の分布がいつも揃ってたらそれもおかしいし。 52314ときたら次は6だろうみたいな。 人の感じる乱数性は真の乱数性とは違うんだろう。
- 346 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 22:06:11 ]
- 音楽のランダム再生などは、真の乱数性ではなく、
人がランダムと感じることこそが重要だが、 こういう擬似乱数列を得る手法で有名どころとかある?
- 347 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 22:46:36 ]
- >>346
単なるシャッフル再生じゃダメなのけ?
- 348 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 23:13:51 ]
- シャッフルといってもいろいろあるべさ。
某MP3プレーヤのシャッフルリピートは同じ曲を3回繰り返したし、 某なんとかシャッフルのシャッフルリピートは同じ曲を一回おきに3回繰り返した。
- 349 名前:347 mailto:sage [2006/12/03(日) 23:41:42 ]
- ランダム再生とシャッフル再生を区別しているプレイヤーもあるな。
ランダム再生 … 一曲終わるたびに、次に再生する曲を全プレイリストの中からランダムに選ぶ。 シャッフル再生 … 再生開始時にプレイリストの一覧をシャッフルしたものを内部的に作り、 その順序にしたがって再生する。プレイリストの全曲を再生し終わったら もう一度プレイリストをシャッフルする。 この分類だと、>348のようなことはランダム再生だと起こりうるが、 シャッフル再生だと起こらない。
- 350 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 23:54:15 ]
- >>347
言われてみればそうだな。連続出現の心配はなくなるわけだ。 あとで思い出したが、同じアルバムの曲が10曲中3曲もあるから ランダムじゃないと感じることもある。 まあこれもバラし方を考えればいいだけで、 乱数の発生方法とは関係ない話だったな。
- 351 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 11:10:31 ]
- >>346
>>324みたいな乱数列を作ればいい訳で
- 352 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 13:57:14 ]
- >>345
擬似乱数なんだから乱数を元にしたシャッフルで問題ないだろ。 現実のサイコロにしても目の数の周期性はあるわけだし。 ※理論的なサイコロではない。 単に乱数に拘るのは周期が短いライブラリーなどにある乱数関数を使うと 規則性が表面に出て見えることがある。 この点であると思う。真の乱数であるなばら規則性が目立っても それは一時的(数年続いても無限からすれば極短期間)な挙動であって 乱数である。 何かの規則で一様性な分布がほしいのであれば「無限級数」等を使えば 言い訳で、人間から見て一様乱数にみえるのはシャッフルがもっとも 近いものじゃないか?
- 353 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 18:28:56 ]
- >>352
ぐだぐだな日本語に気持ち悪くなってくる。 >擬似乱数なんだから乱数を元にしたシャッフルで問題ないだろ。 シャッフルな用途にはシャッフルで問題ない。シャッフルでは困る用途もきっとある。 >現実のサイコロにしても目の数の周期性はあるわけだし。 現実のサイコロに周期性など無い。ってか「目の数の周期性」って何? >単に乱数に拘るのは周期が短いライブラリーなどにある乱数関数を使うと >規則性が表面に出て見えることがある。 この文は「周期が短い乱数関数を使うと規則性が見える。」でよいか? (冒頭の「単に乱数に拘るのは」はなんなんだろう?) >この点であると思う。 何が?? >真の乱数であるなばら規則性が目立っても >それは一時的(数年続いても無限からすれば極短期間)な挙動であって >乱数である。 最後の「乱数である。」はいらない。「挙動である。」で締めましょう。 >何かの規則で一様性な分布がほしいのであれば「無限級数」等を使えば言い訳で、 無限級数なんて関係無いでしょう。級数=数列の和 ですよ。 >人間から見て一様乱数にみえるのはシャッフルがもっとも >近いものじゃないか? 人がどう見るかなんて、その人によるとしか言えない。 一巡するまで同じものが出ないものは一様乱数にみえないって人もいるだろう。
- 354 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 00:16:44 ]
- ところで↓こういうネタがあるんだが、どう思う?
ttp://bugfix.jp/blog/culdceptsaga/2006/12/post_42.html
- 355 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 10:33:38 ]
- >>353
釣り氏?
- 356 名前:287 mailto:sage [2006/12/06(水) 15:34:10 ]
- >>290
>>統計的に値の出現頻度が偏っているときに、それを補正することもある >どういう補正を考えてるの? 全然わからないです.というか >「1が続いたので次に1が出る確率を減らす」ような処理ならばNo。 >そのような数列は乱数とは呼ばない。 >乱数とは過去のデータにかかわらず常に一定の確率分布を持つもの。 私もそう思う(そういう定義しか知らない)ので・・・
- 357 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 23:57:04 ]
- >>356
ここは擬似乱数のところだから、真の乱数、つまり論理的な真の乱数を 言うのならそれなりの説明が必要とおもわれる。 実際に必要とされるのは真の乱数ではなく、擬似乱数であり 擬似乱数にはいろいろ種類があり、用途別に話しを展開しなければ 無意味な議論じゃないのか?
- 358 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 20:21:25 ]
- ほしゅ
- 359 名前:デフォルトの名無しさん [2007/01/31(水) 23:01:07 ]
- >>330
しょ、詳細を…
- 360 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 22:52:43 ]
- >>359
カオスのバタフライ現象を簡易化した形を使うのが簡易です。 シフトとビット操作で比較的簡単に作れる。 放送大学で具体的手法まで解説していたよ。 全体を均一にしたい場合はCDプレイヤーなどで 使われるシャッフルのアルゴリズムが一番簡易です。 0〜999の間なら1000ビットのRAMが最低必要になりますが。
- 361 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 08:09:20 ]
- CDプレイヤのシャッフルと言うと、実装方法によってばらつきがまちまちということですか?
#中には同じ曲が連続しやがるCDプレイヤも一回置きに繰り返すCDプレイヤもあるのだが。
- 362 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 08:46:34 ]
- それはシャッフル再生ではなくてランダム再生?
- 363 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 09:17:28 ]
- シャッフル再生と言い張りつつ>361のようなのはあるね。iPodShuffleも所謂シャッフルじゃないし。
- 364 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 16:31:17 ]
- Winampは完全なオプションでシャッフルから完全なランダムまで変化の度合いを設定できるんだよな
Morph Rateとか名づけてたっけ
- 365 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 16:32:05 ]
- すまん1行目訂正
Winampはオプションで完全なシャッフルから完全なランダムまで変化の度合いを
- 366 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 22:52:08 ]
- >>361
シャッフルを正しく実装しているものは同じ曲をバラバラにすべての曲を 1回づつ再生する機能のこと。 ランダム再生をしているのにシャッフルと名前を付けている のは単に誤訳か、まがい物じゃないか? e-words.jp/w/E382B7E383A3E38383E38395E383ABE5868DE7949F.html
- 367 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 22:54:16 ]
- 公取委かJAROに訴えればいいのそれ?
- 368 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 23:50:08 ]
- >>366
iPodShuffule訴えてくれ。
- 369 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 22:08:43 ]
- >>368>>367
アップルに騙されたオマイがDQN
- 370 名前:デフォルトの名無しさん mailto:sage [2007/02/11(日) 10:15:46 ]
- 最も単純で低精度な擬似乱数の作り方てどこかにない?
- 371 名前:デフォルトの名無しさん mailto:sage [2007/02/11(日) 10:25:27 ]
- どんなアルゴリズムでも擬似乱数と言い張れば、それは擬似乱数
- 372 名前:デフォルトの名無しさん mailto:sage [2007/02/11(日) 10:53:43 ]
- >370
ttp://ja.wikipedia.org/wiki/擬似乱数
- 373 名前:デフォルトの名無しさん mailto:sage [2007/02/11(日) 11:21:27 ]
- もっとも単純なわけでも低精度なわけでもないが
地球上でもっとも虐げられている擬似乱数アルゴリズムは やっぱ線形合同法なんじゃね?
- 374 名前:デフォルトの名無しさん [2007/02/11(日) 18:07:28 ]
- >>370
5かけて1足してffでマスク
- 375 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 06:24:21 ]
- >>370
擬似バタフライ効果があれば何でもいいんじゃない?
- 376 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 15:47:49 ]
- >>370
常に定数を返す擬似乱数がもっとも周期が短い。 これより周期の短い擬似乱数はない。
- 377 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 22:46:09 ]
- 何も返さない擬似乱数
- 378 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 07:58:43 ]
- 何も返さない擬似乱数は周期が短いとは言えない。
何も返さない擬似乱数は分布が偏っているとは言えない。 何も返さない擬似乱数は擬似乱数テストプログラムをテストするために使えない。 370の目的はたぶん最後のコレ。
- 379 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 20:58:47 ]
- >>376
定数ってだけじゃなく1bitであるべき(どうしても int にするなら 0 or -1)だろうな。 そうじゃないとbit単位のストリームとして見たときにbit数分の周期が存在することになる。
- 380 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 08:13:45 ]
- うむ、0と1の分布という点からも0か-1であるべきだな。
そして、0超過状態からの脱出という観点からは0であるべきだな。
- 381 名前:171 [2007/04/10(火) 04:02:15 ]
- いつのまにやらSIMD対応ほかいろいろ改良してるモノが出てるな。
まあ俺が以前いってたSIMD対応はメモリ上の並びをパズルみたいにコチョコチョいじるだけで メモリ使用量も増やさず意外と簡単にできたんだが、 それ以外の改良となると、やっぱじっくり研究しないといかんわな。 悔しいが現役の学生にはかなわん。これは認めておいて、 とりあえずコード読んで高速化の余地を探すとするか。
- 382 名前:デフォルトの名無しさん [2007/04/10(火) 04:26:31 ]
- どっちの乱数の方が優れているか判定をおしえろ
- 383 名前:382(乱数の精度判定) [2007/04/10(火) 05:08:58 ]
- #include <stdio.h>
#include <stdlib.h> #define N 2147483647 #define kaisu 10000000 #define PI 3.141592653589 unsigned int ransuusyokiti=1; double rnd(){ ransuusyokiti=(int)(1664525*(double)ransuusyokiti+1013904223)&N; return ransuusyokiti/((double)N+1);} int main(){ unsigned int i; double n=0.0,x,y; for(i=0;i<kaisu;i++){ x=rnd();y=rnd(); if(x*x+y*y<=1.0)n+=1;} printf("自前のrandの精度(値が小さいほど良い) %1.9f\n",4*n/kaisu-PI); n=0.0; for(i=0;i<kaisu;i++){ x=rand()/(RAND_MAX+1.0);y=rand()/(RAND_MAX+1.0); if(x*x+y*y<=1.0)n+=1;} printf(" Cのrandの精度(値が小さいほど良い) %1.9f\n",4*n/kaisu-PI); return 0;}
- 384 名前:382 改良版 [2007/04/10(火) 05:40:20 ]
- #include <stdio.h>
#include <stdlib.h> #include <math.h> #include <time.h> #define N 2147483647 #define kaisu 50000000 #define PI 3.141592653589 unsigned int ransuusyokiti=1;double rnd(){ ransuusyokiti=(int)(1664525*(double)ransuusyokiti+1013904223)&N; return ransuusyokiti/((double)N+1);} double xor128(){ static unsigned long x=123456789,y=362436069,z=521288629,w=88675123;unsigned long t; t=(x^(x<<11));x=y;y=z;z=w; return(double)( w=(w^(w>>19))^(t^(t>>8)) )/4294967296; } double xorHoge(){ static unsigned long x=123,y=456,z=78,w=90;unsigned long t; t=(x^(x<<13));x=y;y=z;z=w; return(double)( w=(w^(w>>7))^(t^(t>>5)) )/4294967296; } main(){unsigned int i,t;double n,x,y; n=0.0;t=clock();for(i=0;i<kaisu;i++){x=xor128();y=xor128();if(x*x+y*y<=1.0)n+=1;} printf(">>18のrandの精度(値が小さいほど良い) %1.9f 生成速度%f秒\n",fabs(4*n/kaisu-PI),(double)(clock()-t)/1000); n=0.0;t=clock();for(i=0;i<kaisu;i++){x=xorHoge();y=xorHoge();if(x*x+y*y<=1.0)n+=1;} printf(">>84のrandの精度(値が小さいほど良い) %1.9f 生成速度%f秒\n",fabs(4*n/kaisu-PI),(double)(clock()-t)/1000); n=0.0;t=clock();for(i=0;i<kaisu;i++){x=rnd();y=rnd();if(x*x+y*y<=1.0)n+=1;} printf("自前のrandの精度(値が小さいほど良い) %1.9f 生成速度%f秒\n",fabs(4*n/kaisu-PI),(double)(clock()-t)/1000); n=0.0;t=clock();for(i=0;i<kaisu;i++){x=rand()/(RAND_MAX+1.0);y=rand()/(RAND_MAX+1.0);if(x*x+y*y<=1.0)n+=1;} printf(" Cのrandの精度(値が小さいほど良い) %1.9f 生成速度%f秒\n",fabs(4*n/kaisu-PI),(double)(clock()-t)/1000);}
- 385 名前:382 [2007/04/10(火) 05:43:38 ]
- Cの標準がかなりいいんだが
>>18のrandの精度(値が小さいほど良い) 0.000233346 生成速度8.329000秒 >>84のrandの精度(値が小さいほど良い) 0.000106306 生成速度8.171000秒 自前のrandの精度(値が小さいほど良い) 0.000263426 生成速度19.563000秒 Cのrandの精度(値が小さいほど良い) 0.000001454 生成速度9.734000秒
- 386 名前:CryptGenRandomはいまいち [2007/04/10(火) 06:28:12 ]
- #include <stdio.h>
#include <stdlib.h> #include <math.h> #include <windows.h> #include <time.h> #define N 2147483647 #define kaisu 200 #define PI 3.141592653589 double win_rand(){ HCRYPTPROV hProv;BYTE b[4]; CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0); CryptGenRandom(hProv, 4, b);CryptReleaseContext(hProv, 0); return (double)(b[0]+(b[1]<<8)+(b[2]<<16)+((b[3]&127)<<24))/2147483648;} double xor128(){ static unsigned long x=123456789,y=362436069,z=521288629,w=88675123;unsigned long t; t=(x^(x<<11));x=y;y=z;z=w; return(double)( w=(w^(w>>19))^(t^(t>>8)) )/4294967296; } double xorHoge(){ static unsigned long x=123,y=456,z=78,w=90;unsigned long t; t=(x^(x<<13));x=y;y=z;z=w; return(double)( w=(w^(w>>7))^(t^(t>>5)) )/4294967296; } main(){unsigned int i,t;double n,x,y; n=0.0;t=clock();for(i=0;i<kaisu;i++){x=xor128();y=xor128();if(x*x+y*y<=1.0)n+=1;} printf(">>18のrandの精度(値が小さいほど良い) %1.9f 生成速度%f秒\n",fabs(4*n/kaisu-PI),(double)(clock()-t)/1000); n=0.0;t=clock();for(i=0;i<kaisu;i++){x=xorHoge();y=xorHoge();if(x*x+y*y<=1.0)n+=1;} printf(">>84のrandの精度(値が小さいほど良い) %1.9f 生成速度%f秒\n",fabs(4*n/kaisu-PI),(double)(clock()-t)/1000); n=0.0;t=clock();for(i=0;i<kaisu;i++){x=rand()/(RAND_MAX+1.0);y=rand()/(RAND_MAX+1.0);if(x*x+y*y<=1.0)n+=1;} printf(" Cのrandの精度(値が小さいほど良い) %1.9f 生成速度%f秒\n",fabs(4*n/kaisu-PI),(double)(clock()-t)/1000); n=0.0;t=clock();for(i=0;i<kaisu;i++){x=win_rand();y=win_rand();if(x*x+y*y<=1.0)n+=1;} printf(" winのrandの精度(値が小さいほど良い) %1.9f 生成速度%f秒\n",fabs(4*n/kaisu-PI),(double)(clock()-t)/1000);}
- 387 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 12:22:01 ]
- コード直貼りもいいが、うpろだを活用してくれ
- 388 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 01:36:14 ]
- ム板的にはwikiのが良くね?
- 389 名前:デフォルトの名無しさん [2007/04/11(水) 02:34:04 ]
- 疑似乱に周期があるから、パイで検定するときは、1000回、10000回、と増やして
いって近似がパイに近づかなくなる回数を調べる事も重要
- 390 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 16:34:53 ]
- 擬似乱数のことを擬似乱と略す人間は初めて見た
- 391 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 21:27:44 ]
- >>386
この精度がいいと(あるいは悪いと)どういう乱数ってことになるの? あと、なんで win_rand() だけ 1 bit 捨ててんの?
- 392 名前:デフォルトの名無しさん [2007/04/16(月) 16:57:12 ]
- >>391
円周率は、3.1415である 正方形(サイズは40000とする)の内部にランダムに 点を4万回打てば、それに内接する円の内部に点が打たれる回数は 31415回程度になる 試行回数を増やせば増やすほど円周率にちかずく ここで乱数の生成が均等であるほど近くなる
- 393 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 20:00:37 ]
- このスレは共立版 knuth の3巻を読んでる事を前提にしていいんですよね?
- 394 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 20:59:09 ]
- >>392
d。 win_rand() で 1 bit 捨ててんのはなんで?
- 395 名前:デフォルトの名無しさん [2007/04/16(月) 21:15:24 ]
- 捨てないと符号関係のエラーがでるんだが
- 396 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 21:25:48 ]
- >>395
それはなんかチョンボってないか? 俺んとこじゃ return (double)(b[0]+(b[1]<<8)+(b[2]<<16)+(b[3]<<24))/4294967296; で、エラーにはならんし。kaisu を 1000000あたりで試行した時は win_rand() が断トツの精度を誇るぞ。 # 処理に要する時間も断トツだけどw
- 397 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 22:10:39 ]
- >>393
共立じゃなくてサイエンス社
- 398 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 22:12:25 ]
- boost::random::mersenne_twisterはだめなん?
- 399 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 01:51:37 ]
- ダメじゃないよ。
というか実質的には最強。 とりあえずwikiでも読んでみなよ。
- 400 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 07:06:41 ]
- もっとすごいのあるよ
SIMD-oriented Fast Mersenne Twister (SFMT): ttp://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html
- 401 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 19:30:13 ]
- WELLの登場で次世代の擬似乱数は混沌とするかと思ったが、
これでしばらくMTの系譜が続くのは確定だな
- 402 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 22:40:44 ]
- 周期長っ!
- 403 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 00:14:07 ]
- 速っ
ttp://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/speed.html
- 404 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 10:51:22 ]
- boost::random::mersenne_twister「メモリぱくぱく おいちい^^^^」
- 405 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 20:33:08 ]
- >>402
>>404 だからSFMTでは短周期版も作ったんじゃないか
- 406 名前:デフォルトの名無しさん [2007/07/04(水) 20:56:27 ]
- SFMTのboost対応版マダー?
- 407 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:18:50 ]
- Twister 系の擬似乱数て
単にカオスの簡単な例「2重振り子」を演算で出しただけじゃん。 適度に内部ビット数増やせば、周期なんて測定不能な域にするのは容易じゃん。 ワンチップとかの超小型マイコンで作るんじゃないんだし、今のPCなら 乱数で使うメモリは捨てるほどあるわけだしな。
- 408 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:29:35 ]
- >単にカオスの簡単な例「2重振り子」を演算で出しただけじゃん。
それを実装したことに意味があるんじゃん。 …って開発者が言ってた。
- 409 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 23:43:55 ]
- >>408
似た事を主張した奴とか類似物を作ったやつも、正式に論文発表しなかった だけにすぎない。
- 410 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 09:47:42 ]
- コロンブスなんて西に航海しただけ。コロンブスがしなくても誰かがやったよね。
- 411 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 09:52:53 ]
- コロンブスってタダの方向音痴なんじゃないかと思う
- 412 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 10:22:53 ]
- 「西に向かえば地球は丸いそうだからアジアに辿り着ける筈だ」と言う発想は方向音痴とはいえまい。
- 413 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 13:30:58 ]
- 西に向かって最初に見つけた陸地を西インド諸島と名付けるのはどうか。
せめて西ジパング諸島と呼ぶべきだったと思う。
- 414 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 15:29:18 ]
- コロンブス以前に原始人が海をわったったという遺伝子が原住民の
遺伝子確認で分かっている点について(ry
- 415 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 20:29:40 ]
- 同時代に同じことを考えた香具師はいっぱいいる
コロンブスチームのマーケティングの勝利
- 416 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 20:40:37 ]
- このビルのガラス窓は頑丈だと証明しようと体当たりしてぶち破って死んだ弁護士もいたな
- 417 名前:デフォルトの名無しさん [2007/07/11(水) 01:10:25 ]
- >>416
荒縄静香を思い出した 確かWeb魚拓は取っといたはずだけど どこいっちゃたtかな
- 418 名前:デフォルトの名無しさん [2007/07/11(水) 01:16:28 ]
- 【総連】「安倍一味には負けない」総連弾圧に対して措置取る…朝鮮外務省代弁人声明
ttp://news21.2ch.net/test/read.cgi/news4plus/1183572310/l50
- 419 名前:・∀・)っ-○◎● mailto:sage [2007/07/11(水) 01:22:51 ]
- >>406
斉藤君に連絡とってみるかな。 個人的にはSSE2非対応CPU向けにMMX版くらいは欲しいんだが。 本人が動いてくれるくれないにかかわらず、SSE2版だけならVC8/ICC用の クラスを作ってみようと思うが。どうせ俺が使うし。
- 420 名前:デフォルトの名無しさん [2007/07/11(水) 01:28:04 ]
- で、SCEからオファーはきたの?
- 421 名前:・∀・)っ-○◎● mailto:sage [2007/07/11(水) 01:34:19 ]
- 音沙汰無いよ
- 422 名前:・∀・)っ-○◎● mailto:sage [2007/07/11(水) 01:59:55 ]
- Cスタイルのコーディングってさ、どうしてグローバル変数汚染しようとするのかねぇ。
スレッド毎にインスタンス生成すればスレッドセーフうめぇwwww
- 423 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 02:17:06 ]
- スタックに作ればいいやん
- 424 名前:・∀・)っ-○◎● mailto:sage [2007/07/11(水) 07:26:20 ]
- たとえばさ、MTのgenrand()を複数のスレッドから参照してみてごらん。必ずおかしなことがおきます。
BoostのRNGは全部クラス化してあって一時計算領域もインスタンス毎に生成するからスレッドセーフなのよ
- 425 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 07:55:00 ]
- 乱数生成ルーチンがバグってて出鱈目な値を返していても誰も気がつかない罠
- 426 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 08:19:10 ]
- 内部ベクトルでかいんだから、ミューテックスのがよくね?
- 427 名前:デフォルトの名無しさん [2007/07/12(木) 21:44:58 ]
- おいおい19937ビット+αだぜ?
- 428 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 22:28:42 ]
- TLS使えばしまいだろ
- 429 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 22:36:08 ]
- >>428は>>422宛ね
- 430 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 23:29:54 ]
- TLSとは何か。
Transport Layer Security Thread Local Storage True Love Story いろいろあるんだな……
- 431 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 02:11:06 ]
- いや、内部ステートをスレッド毎に持つというのは
確かに複数スレッドからの同時アクセスの点では良いのだが 例えばよく使われるsrand()はどうするのか。 スレッド毎にsrand()を呼ぶのか あるいはsrand()の内部でスレッドを数え上げるのか srand(time(NULL))の後にスレッドを作成したらどうなるのか ↑を最初に一度だけ呼んである過去のコードの扱いはどうなるのか 等々、面倒くさいことがありすぎるよ。 まともなコードで、srand()を呼ばずにrand()を使っているものがあるとは思えないし。 もちろん、「標準のrand()」を置き換えるのではなく 「自分で使う乱数生成器」をどうするか、という話なら 好きなようにどうぞ、というだけだけど。
- 432 名前:・∀・)っ-○◎● mailto:sage [2007/07/13(金) 03:11:46 ]
- そりゃ各スレッド毎にパラメータがあるわけだから、それぞれに初期化が必要になるだろうね。
種は現在時間+スレッドID+GUID/UUID+HDDシークタイムからとった自然乱数もどき+・・・・ 見たいな感じでいろいろ組み合わせればよくね? 最近のMTの派生実装は種を配列で与えることができるんで、ユニークな乱数列になるように なるべく多くのパラメータを与えるといい。 MTは種さえ被らせなきゃそこそこうまくバラけてくれる。
- 433 名前:デフォルトの名無しさん [2007/07/13(金) 08:20:03 ]
- CryptGenRandは?
- 434 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 09:29:57 ]
- そういう話かよ?
- 435 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 12:42:16 ]
- ワークメモリがスレッド毎に独立してると、たとえばモンテカルロみたいなのを複数スレッドで分割処理やりたいときに有用。
プロセスを分ければいいと言われると返す言葉がないがね。
- 436 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 22:15:41 ]
- >>386 亀レス
double win_rand2(HCRYPTPROV hProv){BYTE b[4];CryptGenRandom(hProv, 4, b); return (double)(b[0]+(b[1]<<8)+(b[2]<<16)+((b[3]&127)<<24))/2147483648;} n=0.0;t=clock();HCRYPTPROV hProv;CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0); for(i=0;i<kaisu;i++){x=win_rand2(hProv);y=win_rand2(hProv);if(x*x+y*y<=1.0)n+=1;} CryptReleaseContext(hProv, 0); printf(" winのrandの精度(値が小さいほど良い) %1.9f 生成速度%f秒\n",fabs(4*n/kaisu-PI),(double)(clock()-t)/1000);
- 437 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 21:40:05 ]
- CryptGenRandomって自分じゃジェネレートしてないのに、なんでGenRandomなんだ?
GetRandomじゃないのか?
- 438 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 19:01:44 ]
- その Gen は Generate ではなく、元、つまり集合の1要素だって
おじいちゃんがゆってた。
- 439 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 00:24:49 ]
- 「源」じゃないの?
すなわち「おじいちゃんの名前(ゲンじいちゃん)」 え?ちがう?
- 440 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 00:29:36 ]
- ララ… わしゃ悔しいわい
- 441 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 14:32:34 ]
- アゴなしの人か。
- 442 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 22:22:22 ]
- DDAで円の軌跡を計算して、それを2重にして乱数作ったんだが、
擬似乱数として性能がいいのか調べる方法はある?1から10までの分布は それらしくなっているんだけどな。
- 443 名前:・∀・)っ-○◎● mailto:sage [2007/07/19(木) 23:57:25 ]
- だんごやさんはSSE2用sfmtをboostに移植しようとしたがテンプレート地獄に涙目
- 444 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 13:54:11 ]
- ビット毎の出現確率でも調べたら?
- 445 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 07:35:38 ]
- >>442
どっかに基準とはる判定方法があったかも
- 446 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 09:09:19 ]
- とりあえず、こんなのは見つかった。
DieHarder: A Random Number Test Suite Robert G. Brown's General Tools Page www.phy.duke.edu/~rgb/General/dieharder.php
- 447 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 19:11:11 ]
- >>446
乱数検定の定番だな
- 448 名前:デフォルトの名無しさん [2007/08/15(水) 00:44:29 ]
- いろんな圧縮アルゴリズムにかけて
圧縮率を見るのってどうなの? 邪道?
|

|