1 名前:デフォルトの名無しさん [2007/10/17(水) 22:34:59 ] 擬似乱数発生器について語ろうか。その2 前スレ 擬似乱数 pc11.2ch.net/test/read.cgi/tech/1146071975/ 関連スレ 【危険】とんでもプログラム告発スレッド【悪質】 pc11.2ch.net/test/read.cgi/tech/1191860116/ SIMD-oriented Fast Mersenne Twister (SFMT): www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html
2 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 22:53:56 ] で、いつになったらSFMTはboostに組み込まれるの?
3 名前:デフォルトの名無しさん [2007/10/17(水) 23:16:58 ] 俺用メモ 18* 名前:デフォルトの名無しさん [] 投稿日:2006/04/28(金) 23:53:29 軽さで言えばXorShiftとか。 unsigned long 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( w=(w^(w>>19 ))^(t^(t>>8 )) ); }
4 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 23:35:36 ] >>3 せっかくだからURLも貼っとこう web.comlab.ox.ac.uk/oucl/work/richard.brent/pub/pub218.html
5 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 23:38:04 ] この手の乱数マジックナンバーでよくでてくる 123456789 なにふざけてるのかと思ってたら、 0.1234567891011121314… って超越数なんだな。 つまり123456789は、その超越数を10億倍して9桁の精度で切り落とした、 そこそこ質のよい数なのであった。 目からウロコ
6 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2007/10/18(木) 00:42:09 ] マジックナンバーに0xDEADBEEFってよく見る
7 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 01:51:23 ] SFMTはCPUの機能に最適化させてるメルセンヌツイスタですよね? boostはテンプレートライブラリだからそれはいつまでたっても組み込まれないと自分は思います…。
8 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 08:32:57 ] >>7 意味不明
9 名前:7 mailto:sage [2007/10/18(木) 10:16:21 ] C++のテンプレートライブラリとして実装するものなのかなと思っただけです。
10 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 12:38:11 ] 独自の乱数発生器を組み込めるのがboost::randomのよいところ。 手直しは必要だが。 っていうか、boostがテンプレートライブラリだなんて誰が言ってるの? STLの事じゃなくて?
11 名前:7=9 mailto:sage [2007/10/18(木) 14:19:16 ] 実際違いました…すみません。 boostの一部がSTLに移植されるとか書いてあったの見てたから勘違いかな…。 regexとかはテンプレートライブラリではなかったです。 あと、SFMTの情報斜め読みしてたから勘違いしてしまいました。申し訳ありません。
12 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 19:08:52 ] RandomはTR1に入った、つまり標準ライブラリ入り内定ではある。 Regexは、テンプレートライブラリと呼ぶかどうかはともかく、 basic_regexなどテンプレートはよく使っている。
13 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2007/10/19(金) 00:54:05 ] regexがプリコンパイル方式なのは型が最初から決まってるからじゃん。
14 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 09:58:49 ] Xorshift RNGs unsigned long 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( w=(w^(w>>19 ))^(t^(t>>8 )) ); } ttp://lucille.atso-net.jp/wiki/index.php?%CD%F0%BF%F4
15 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 12:51:57 ] Boost はほとんどテンプレートだけど、 たまにテンプレートじゃないのがあるからな。
16 名前:デフォルトの名無しさん [2007/10/23(火) 01:38:55 ] www.nicovideo.jp/watch/sm1331242 歌詞を乱数で生成した歌
17 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 04:40:30 ] (ax+b) mod M でいいよ…
18 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 05:09:13 ] MT使え。 いじょ。 終了。
19 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 08:01:20 ] 再開
20 名前:デフォルトの名無しさん [2007/10/25(木) 23:12:25 ] 初心者ですみません。 メルセンヌ・ツイスタって、COBOLに移植されてないでしょうか? MTのページは見たのですがCOBOLはなかったorz
21 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 23:15:18 ] COBOLで頑張ってもいいとはおもうけど(どっかに実装があるかもしれないけど)、 処理系の、Cの関数を呼び出す機能の利用を検討するのもありと思う
22 名前:デフォルトの名無しさん [2007/10/25(木) 23:27:05 ] >>21 ああ、おっしゃる通りですね。Cならすでにソースあるんだし。 その方向で検討します。ありがとうございました。
23 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 11:24:36 ] COBOLで乱数が必要なのか?
24 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 12:14:41 ] 使えないとちょっとCOBOL
25 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 19:27:33 ] コボルと困るを掛けた駄洒落か。なるほど。次の宴会で使おう。
26 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 09:43:23 ] 昔COBOLでなんちゃって正規分布乱数を作ったな 時計の1000分の一秒の値を種にして、中心極限定理を使ったはずだ COBOLのシステムで何をするかしらんが、この程度で十分じゃねぇの?
27 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 19:36:32 ] >>25 きっと誰かのビールがCOBOLる
28 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 19:49:41 ] それは、すCOBOL、きついな。
29 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 00:13:57 ] XorShiftのk=128では無いバージョン(32,64,96,160,192)について 誰か擬似コードor参考になるURL希望。 ググったが出て来なかった(多分やり方が悪いorz)
30 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 01:20:36 ] >>29 ttp://www.jstatsoft.org/v08/i14/ ttp://www.iro.umontreal.ca/~lecuyer/myftp/papers/xorshift.pdf
31 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 15:50:53 ] ド素人なので突っ込みどころがあったら御教授くださいorz rand()で生成した乱数をバイナリ形式で出力して NIST SP800-22やdiehardテストに突っ込みたいんですけど・・・ ↓のままだとdiehardどころかSP800-22にも引っかかってしまいます #include <stdio.h> #include <stdlib.h> // rand, srand使用 #include <time.h> // time使用 #define size 12000000 //bit列の長さ定義 ↓
32 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 15:52:35 ] main() { FILE *outputfile; // 出力ストリーム unsigned long int m,i=0; char bit[size]; srand((unsigned) time(NULL)); // time関数からシードをセット outputfile = fopen("bit.dat", "w"); // ファイルを書き込み用にオープン if (outputfile == NULL) { // オープンに失敗した場合 printf("cannot open\n"); // エラーメッセージを出して exit(1); // 異常終了 } for(i=0; i<size-1; i++){ // 乱数を発生させ剰余を計算 m=rand()%0xffff; bit[i]=m; } fwrite(&bit,size,1,outputfile); //バイナリの書き込み fclose(outputfile); // ファイルをクローズ return 0; } ↓公式ページ NIST ttp://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html diehard ttp://stat.fsu.edu/pub/diehard/
33 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 03:37:01 ] >>31 rand()は乱数としての性質があまりよろしくないという 当たり前のことを文句言われてもどうかと。
34 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 12:45:15 ] >>32 > rand()%0xffff 一般論として、 剰余を取っても良質な疑似乱数列となっていることが保証されている 乱数生成系でない場合は、剰余ではなく商を取って一定の範囲に 切り詰めるべき。 歴史的に、システムのデフォルトの乱数生成系は品質の悪いものが 多いので、良い疑似乱数が必要なら、マニュアル等で良質な 乱数生成系を使っていることが確認できなければ、デフォルトの 生成系は使うべきでない。
35 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 17:26:32 ] そんなのどうでもいいじゃん だからまあ普通はラッパーかけて開発中はrand使って あとで精度ほしくなったら差し替えるように作るわけだが
36 名前:31 mailto:sage [2007/11/03(土) 23:00:03 ] >>33-35 早速の返答ありがとうございます。 色々とマヌケな勘違いをしていましたorz rand()は「暗号用乱数に相応しくない乱数」の一例として示すために用いました。 剰余をとったのは、良質なRNGならば下位bitの乱数性もまた良質だろう ということを逆説的に示すためです。 NISTに同梱されている線形合同法のRNGはテストをパスし、 逆に上記のプログラムで生成した乱数列は全く話にならなかったので、 バイナリへの変換の仕方がマズかったのかと思っていました。 NISTは線形合同法くらいなら通ってしまうと聞いたので てっきりrand()でもイケるものだと…orz
37 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 05:32:17 ] >>36 実行はできてるんだね。 オレの環境だと>>31-32 のコードは動かないんだけど。 # 原因はスタックに置くには配列サイズがでかすぎることみたいだけど。 乱数の質に絡みそうな部分というと型の選択がまずいんじゃね? charじゃなくてunsigned charの配列にしたらどう? それと剰余が違うんじゃね? rand()%0xffff → rand()&0xffff でしょ。 あとループの回数も一回少ないと思う。
38 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 02:14:18 ] RAND__MAXと0xffffってどっちが大きいか知ってる?
39 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:14:12 ] RAND_MAXの値は実装にもよるかと。 そんなことより、rand()%0xffff → rand()&0xffff ←こいつに誰か突っ込まんのか。
40 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:27:10 ] うん
41 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:39:02 ] そんなことよりxorshiftの話しよーぜ
42 名前:デフォルトの名無しさん [2007/11/11(日) 19:11:45 ] unsigned long xor32(){ static unsigned long y=2463534242; yˆ=(y<<13);y=(y>>17 );return (yˆ=(y<<5));} unsigned long long xor64(){ static unsigned long long x=88172645463325252LL; xˆ=(x<<13);xˆ=(x>>7 );return(xˆ=(x<<17));} unsigned long xor96(){ static unsigned long x=123456789,y=362436069,z=521288629;unsigned long t; t=(xˆ(x<<20))ˆ(yˆ(y>>11 ))ˆ(zˆ(z<<27))ˆ(wˆ(w>>6 ));x=y;y=z;z=w;return(w=t);} unsigned long 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(w=(wˆ(w>>19 ))ˆ(tˆ(t>>8 )));} unsigned long xor160(){ static unsigned long x=123456789,y=362436069,z=521288629,w=88675123,v=5783321;unsigned long t; t=(xˆ(x>>7 ));x=y;y=z;z=w;w=v;return v=(vˆ(v>>6 ))ˆ(tˆ(t>>13 ));} unsigned long xor192(){ static unsigned long x=123456789,y=362436069,z=521288629,w=88675123,v=5783321,d=6615241;unsigned long t; t=(xˆ(x>>2 ));x=y;y=z;z=w;w=v;v=(vˆ(v<<4))ˆ(tˆ(t<<1));return(d+=362437)+v;} こんな具合か
43 名前:42 mailto:sage [2007/11/11(日) 19:16:33 ] コピペ丸張りで色々とおかしくなってることに気付く。 後悔はしていない。
44 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 20:03:25 ] >>40 意味とランダム度が全然違うだろ。
45 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 20:05:36 ] >>42 これってsrand()に相当する関数は自作しなきゃいかんよね?
46 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 04:38:48 ] >>45 srand_xor(int hoge) { extern static int x; x=hoge; } これでいいんとちゃう?ん?staticはexternできなかったっけ?
47 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 08:50:49 ] >>46 アホかい。
48 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 17:51:10 ] 分からなかったらとりあえずクラス化→private属性のクラス内変数で(ry
49 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:27:42 ] あるシードを使うと、得られる乱数を繋げたバイナリが 偶然たまたま 迷走Mind.mp3 として読めるような 乱数ジェネレータを作ったら どうだろうか。
50 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:44:09 ] 確率的にありえない
51 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 00:09:54 ] 意図的に作るんなら偶然じゃないな
52 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 00:27:25 ] PSG
53 名前:デフォルトの名無しさん [2007/11/17(土) 05:19:51 ] >>42 には間違いがあるので注意
54 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 05:24:13 ] 訂正したコードを示した方が有用なレスになると思うよ。
55 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 19:12:39 ] >>42 の unsigned long xor32(){ static unsigned long y=2463534242; y?=(y<<13);y=(y>>17 );return (y?=(y<<5));} の y=(y>>17 ) は y^=(y>>17 ) とすべき
56 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 13:04:45 ] XORってライブラリ化してないの?
57 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/01/07(月) 00:17:55 ] めぼしいのはBoost.Randomにある
58 名前:デフォルトの名無しさん [2008/01/07(月) 12:16:11 ] 団子あげ
59 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 16:23:59 ] MTの別実装を作ってみました。 ttp://mt-lite.sourceforge.net/index.html.ja 基本のアルゴリズムはいじらず実装だけを作ったもので、 メモリ節約・リアルタイム性・スレッドセーフなどに一通り配慮したつもりです。 mt19937ar・SFMT・WELL・Xorshiftなどとの比較評価はこのあたりに: ttp://mt-lite.sourceforge.net/doc/ja/evaluation.summary.html
60 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 01:05:03 ] 乙
61 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/01/14(月) 01:28:22 ] SFMTのスレッドセーフ実装なら京大の人のページにあったぞ。SSE2だけだけど。
62 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 01:48:05 ] XorShiftをseed使えるようにする場合、どうすればいいかな?<何度もブン回す以外で
63 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 04:04:29 ] web.comlab.ox.ac.uk/oucl/work/richard.brent/random.html
64 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:24:18 ] >>63 thx
65 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:52:52 ] /* xor128()をSSE2で実装してみました。XorShift は SIMD に向かない事がわかりました。*/ #include <stdio.h> #include <time.h> #include <emmintrin.h> unsigned long xor128(void){ static unsigned long x=123456789UL,y=362436069UL,z=521288629UL,w=88675123UL; unsigned long t;t=(x^(x<<11));x=y;y=z;z=w;return(w=(w^(w>>19 ))^(t^(t>>8 )));} unsigned long xor128sse2(void){ static union{unsigned long v[4];__m128i m;}u={123456789UL,362436069UL,521288629UL,88675123UL}; __m128i x=u.m, w, t, r; r=_mm_slli_epi32(x,11);t=_mm_xor_si128(x,r); w=_mm_srli_si128(x,12); x=_mm_srli_si128(x,4); r=_mm_srli_epi32(w,19);w=_mm_xor_si128(w,r); r=_mm_srli_epi32(t,8); t=_mm_xor_si128(t,r); w=_mm_xor_si128(w,t); r=_mm_slli_si128(w,12);x=_mm_or_si128(x,r); _mm_store_si128(&u.m,x);return(u.v[3]);} void main(void){long i,c; for(i=0;i<16;i++)printf("%8lx %8lx\n",xor128(),xor128sse2()); c=clock();for(i=0;i<50000000L;i++)xor128(); printf("xor128(): %4lu msec\n",clock()-c); c=clock();for(i=0;i<50000000L;i++)xor128sse2();printf("xor128sse2():%4lu msec\n",clock()-c);}
66 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:04:20 ] 32 行書けるんだからもうちょっと綺麗におながいします
67 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:52:54 ] 上のほうでrand()をダイハードに食わせるとかいってた人がいたのでオチを教えておきます。 p=1.0頻発します。テストの種類によっては部分がすべてp=1.0 あわせてp=1.0みたいな。 xor128()って、例の論文に載ってるコードを組み込む場合、ライセンスはPD扱いですか?
68 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:53:58 ] >>65 こりゃ無茶だろ.こういう使い方は... 別の種の乱数を4個同時に生成するのが正解
69 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 16:03:59 ] >>62 xor128内部で使われてる変数x,y,z,wの中のxに、デフォルトの数値(123456789)の変わりに 与えられたseed値を代入するようにしてみた。 一応ちゃんと動作してるっぽいが統計的に良いのか悪いのかはよく分からん
70 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 18:39:47 ] >>69 初期値ってあの値じゃなくても良かったのね。 乱数の質がどの程度変わるのかが気になるが
71 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:28:29 ] やっつけでtimeの値入れたり
72 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:41:19 ] SEED値を入れるならxよりwの方がいい気がする
73 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 20:24:10 ] /* >>68 さん。的確なアドバイスありがとうございます。>>68 さんの方法で書いてみました。*/ /* 種で初期化する関数付き。XorShift の SSE2 による高速化はあきらめるしかないのか! */ #include <stdio.h> #include <time.h> #include <emmintrin.h> unsigned long xor128(void) { static unsigned long x=123456789UL,y=362436069UL,z=521288629UL,w=88675123UL; unsigned long t;t=(x^(x<<11));x=y;y=z;z=w;return(w=(w^(w>>19 ))^(t^(t>>8 )));} int idx=4; union { unsigned long v[4]; __m128i m; } x={123456789,123456789,123456789,123456789},y={362436069,362436069,362436069,362436069}, z={521288629,521288629,521288629,521288629},w={ 88675123, 88675123, 88675123, 88675123}; void sxor128x4(unsigned long s) {int i; for (idx=4,i=0;i<16;i++) x.v[i]=s=1812433253*(s^(s>>30 ))+i; } unsigned long xor128x4(void) { __m128i t,r,s; if (idx==4) { r=_mm_slli_epi32(x.m,11); t=_mm_xor_si128(x.m,r); x.m=y.m; y.m=z.m; s=z.m=w.m; r=_mm_srli_epi32(s,19); s=_mm_xor_si128(s,r); r=_mm_srli_epi32(t,8); t=_mm_xor_si128(t,r); s=_mm_xor_si128(s,t); w.m=s; idx=0; } return(w.v[idx++]); } void main(void){ long i,c; for (i=0;i<9;i++) printf("%8lx %8lx %8lx %8lx %8lx\n", xor128(),xor128x4(),xor128x4(),xor128x4(),xor128x4() ); for (sxor128x4(1),i=0;i<9;i++) for (printf("\n"),c=0;c<4;c++) printf("%8lx ",xor128x4() ); for (c=clock(),i=0;i<100000000L;i++) xor128(); printf("\n(xor128():%lu msec), ",clock()-c ); for (c=clock(),i=0;i<100000000L;i++) xor128x4(); printf("(xor128x4():%lu msec)\n",clock()-c ); }
74 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 21:20:55 ] >>73 その種の使い方、MTと全く同じだな
75 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 22:51:40 ] XorShiftの正しいシードの設定方法を教えてくれ!
76 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 18:55:32 ] 論文の6ページ目に xor128 の seed set は全て0の場合を除いて、どの ように設定してもよいと書いてある。しかし、極端な設定をすると不自然 な部分列が出力される。そこで初期化の方法はMTを参考にした。iを0 からではなく1から始めた理由は0を種にしたときに最初の2つの出力が 似た値にならないようにするためである。配列を使っているが、スピード はオリジナルとほとんど変わらない。コンパイラによっては、こちらの方 が速くなる場合もある。デフォルトの初期ベクトルは rand,srand になら って種を1としたときと同じである。 unsigned long MyVec128[4]= { 1812433254UL, 3713160357UL, 3109174145UL, 64984499UL }; void MySeed128(unsigned long s) { int i; for (i=1;i<=4;i++) MyVec128[i-1]=s=1812433253UL*(s^(s>>30 ))+i; } unsigned long MyXor128(void) { unsigned long *a=MyVec128, t=a[0], w=a[3]; a[0]=a[1]; a[1]=a[2]; a[2]=w; t^=t<<11; t^=t>>8 ; w^=w>>19 ; w^=t; a[3]=w; return w; }
77 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 19:35:39 ] なるほど、どんな初期値であっても、2^128-1のどこかの部分列になってるのか
78 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 23:17:42 ] >>61 について誰か詳しく頼む
79 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:25:58 ] ん? 何が分からなかった?
80 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:44:19 ] 遅いんだよ もういい
81 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:24:35 ] はやっ
82 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:53:55 ] こんな過疎スレで遅い言われても
83 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:59:56 ] 自分がいくら張り付いてるからって、ね。
84 名前:78 mailto:sage [2008/02/02(土) 06:55:22 ] >>61 のソースの所在教えてくれ パクる
85 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/02/02(土) 07:20:15 ] dSFMTだったごめん。 nct.brain.riken.jp/~takekawa/softwares.xhtml あとこんなのもあった。 charles.karney.info/random/
86 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 13:34:07 ] thx
87 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 13:46:53 ] ダンゴさんはSSEネタには造詣が深いな。
88 名前:デフォルトの名無しさん [2008/02/03(日) 16:46:36 ] じゃあ上げとこ
89 名前:デフォルトの名無しさん [2008/02/22(金) 20:01:38 ] シミュ板、数学板に乱数スレ発見。 乱数 science6.2ch.net/test/read.cgi/sim/1100375806/ 乱数の生成方法を必死になって考えるスレ science6.2ch.net/test/read.cgi/math/1203153071/
90 名前:デフォルトの名無しさん [2008/03/23(日) 01:46:24 ] あげ
91 名前:デフォルトの名無しさん [2008/03/27(木) 23:56:06 ] XORSHIFTって、その出力の剰余を取った場合も 良質なランダム性があるって言われているのでしょうか?
92 名前:デフォルトの名無しさん [2008/03/28(金) 00:05:34 ] XORSHIFTは良質ではないと思います
93 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 00:06:25 ] 工工エエエエエ(´Д`)エエエエエ工工
94 名前:デフォルトの名無しさん [2008/03/28(金) 00:11:48 ] MTが一番良質と思います XORは速度は速いです 用途によっては十分です
95 名前:デフォルトの名無しさん [2008/03/28(金) 00:20:58 ] >>91 です。 XORSHIFTで剰余を取った時の結果を載せてる WEBページを見た気がするのですが、結果が 今一だったような記憶が・・・ 自分でも試してみようと思っているのですが、 理論的には説明出来そうにないし。
96 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 03:02:22 ] >>95 そのWEBページのURL教えてくれ
97 名前:95 mailto:sage [2008/03/28(金) 23:26:21 ] >>96 個人のブログですが、確かここだったと思います。 ttp://d.hatena.ne.jp/Isoparametric/20070830/1188462129 今、改めて読んでみると、よく意味分からん・・・
98 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 23:55:04 ] たった100回回しただけなら偏りも出るだろう
99 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 04:27:31 ] はぐれめたるは捕まえられますか?
100 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 03:21:30 ] >>99 むり