1 名前:デフォルトの名無しさん [2007/10/17(水) 22:34:59 .net] 擬似乱数発生器について語ろうか。その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
302 名前:デフォルトの名無しさん mailto:sage [2010/11/07(日) 13:45:36 .net] 名前で判断してはいけない
303 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2010/11/07(日) 15:15:37 .net] MTのソースってこんな感じじゃなかったか?最近読んでないけど。 int genrand_int31() { return genrand_int32() & 0x7FFFFFFF; }
304 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2010/11/07(日) 15:17:20 .net] 自己解決 /* generates a random number on [0,0x7fffffff]-interval */ long genrand_int31(void) { return (long)(genrand_int32()>>1 ); }
305 名前:デフォルトの名無しさん mailto:sage [2010/11/07(日) 16:30:25 .net] ほうほう
306 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2010/11/07(日) 16:39:17 .net] より厳密に言えば右シフトが論理になるか算術になるかはCの規格上は未定義だったりするのね unsignedなら論理シフトになるってのはある程度のCPUでは共通してるだけの話
307 名前:デフォルトの名無しさん mailto:sage [2010/11/07(日) 16:50:17 .net] なんてこった
308 名前:デフォルトの名無しさん mailto:sage [2010/11/07(日) 19:45:33 .net] 逆だろ。 Cの規格では、 unsignedの右シフト 及び、 signed型であっても保持している値が正である時の右シフト これはいずれも論理シフトになることが決まってるんじゃなかったか。
309 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2010/11/07(日) 19:58:33 .net] 規格書落としてきた。 失礼、unsignedの場合は論理シフトで保証されるんだね。
310 名前:デフォルトの名無しさん mailto:sage [2010/11/07(日) 20:03:17 .net] この辺かな ttp://flash-gordon.me.uk/ansi.c.txt The result of E1 >> E2 is E1 right-shifted E2 bit positions. If E1 has an unsigned type or if E1 has a signed type and a nonnegative value, the value of the result is the integral part of the quotient of E1 divided by the quantity, 2 raised to the power E2 . If E1 has a signed type and a negative value, the resulting value is implementation-defined.
311 名前:デフォルトの名無しさん mailto:sage [2010/11/08(月) 10:40:27 .net] よかった、ほっとした
312 名前:デフォルトの名無しさん mailto:sage [2010/11/08(月) 12:09:17 .net] そりゃunsignedなのに上から1が降ってきたら誰だってビビるわ
313 名前:デフォルトの名無しさん mailto:sage [2010/11/08(月) 12:14:17 .net] 算術シフトしかないCPUで、シフト演算はのんきに全部その命令を生成しちゃう コンパイラだってあるかもしれんし、Cの仕様はそれすらimplementation-definedと 言っていそうな雰囲気がある。この場合は違ったわけだが。
314 名前:デフォルトの名無しさん mailto:sage [2010/11/12(金) 23:22:51 .net] たまにはキャリーさんのことも思い出してあげて
315 名前:デフォルトの名無しさん mailto:sage [2010/11/13(土) 09:26:39 .net] キャリーをさがせ
316 名前:デフォルトの名無しさん [2011/01/18(火) 01:52:26 .net] NIST検査について質問です。乱数の統計的性質を調べるソフトなのですが、 このテストをすべて合格しないと乱数とは言えないのでしょうか? 特にFFT検査の場合に不合格になります。周期はないと思うのですが、なぜか うまくいきません。それとも、これだけは絶対に通らなくてはいけないという 検査があるのでしょうか。どなたかご教示願います。
317 名前:デフォルトの名無しさん mailto:sage [2011/01/19(水) 01:13:06 .net] テストに合格しようがしまいが乱数は乱数じゃね?
318 名前:デフォルトの名無しさん mailto:sage [2011/01/19(水) 01:42:36 .net] 二回(以上)続けて同じ数字が出ないものは乱数と呼びたくないな
319 名前:デフォルトの名無しさん mailto:sage [2011/01/19(水) 09:31:42 .net] >>312 >>284-288
320 名前:デフォルトの名無しさん mailto:sage [2011/01/19(水) 16:52:17 .net] 疑似乱数に詳しくない俺が言うべきじゃないのかもしれないけど 乱数と疑似乱数を分けて考えてない人が居るような気がするんだ。 乱数、たとえばサイコロとかで作った乱数なら2回以上続けて6が出ることもあるでしょ。 でも線形合同法とかの疑似乱数は、同じ数が2回続けて出ることはないし、 循環しちゃうし乱数とは別物じゃない。だから、疑似と真の区別をはっきりさせないと 話がかみ合わなくなる気がするんだ。
321 名前:デフォルトの名無しさん mailto:sage [2011/01/19(水) 17:03:32 .net] 本当にわかってないな
322 名前:デフォルトの名無しさん mailto:sage [2011/01/19(水) 17:14:01 .net] 一気に糞スレ化したね。
323 名前:デフォルトの名無しさん mailto:sage [2011/01/19(水) 17:53:20 .net] >>315 何処がどう分かってないのかハッキリさせないと、その発言に意味はないと思いますよ。 意味のない発言の塊が2chなわけですけど
324 名前:デフォルトの名無しさん mailto:sage [2011/01/19(水) 17:55:41 .net] 314は巨大な状態空間の一部だけ切り出してる擬似乱数が想像できないんだろ
325 名前:デフォルトの名無しさん mailto:sage [2011/01/19(水) 18:20:58 .net] >>317 >>313
326 名前:デフォルトの名無しさん mailto:sage [2011/01/19(水) 18:39:02 .net] >>318 そういうのは自分で考えさせないと
327 名前:314 [2011/01/19(水) 19:16:42 .net] >>318 、320 よく分からないんですが、疑似と真乱数を分けて考える必要はないということですか?
328 名前:デフォルトの名無しさん mailto:sage [2011/01/20(木) 00:03:34 .net] 何故区別する必要があると思ったの? 問題の出てくる例を挙げて欲しい。
329 名前:デフォルトの名無しさん mailto:sage [2011/01/20(木) 00:15:30 .net] えさを与えないでください
330 名前:314 mailto:sage [2011/01/20(木) 01:23:19 .net] >>322 そもそもこの2つは別物なのにその2つを同じ言葉で表すのが気持ち悪いと感じるんですよ。 >>310 は疑似乱数のテストについて質問していて、>>311 、312は真乱数を前提に 話してるみたいだし、>>313 は疑似乱数を前提に発言してる。どうも疑似と真を分けてないから 話が噛合ってないように見えるんですよ
331 名前:デフォルトの名無しさん mailto:sage [2011/01/20(木) 01:54:43 .net] スルーしてください
332 名前:デフォルトの名無しさん mailto:sage [2011/01/20(木) 05:00:53 .net] スレタイも読めないヤツに何かが分かるなんて期待するヤツはいない。
333 名前:デフォルトの名無しさん [2011/01/20(木) 17:55:54 .net] わざと答えをはぐらかしてるみたい
334 名前:デフォルトの名無しさん [2011/01/20(木) 18:03:55 .net] 324は正しい
335 名前:デフォルトの名無しさん mailto:sage [2011/01/20(木) 18:06:56 .net] 乙です
336 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 11:03:07.44 .net] George Marsaglia (1924 - 2011) ttp://www.legacy.com/obituaries/tallahassee/obituary.aspx?n=george-marsaglia&pid=148777353
337 名前:デフォルトの名無しさん [2011/04/16(土) 11:16:55.91 .net] age
338 名前:デフォルトの名無しさん mailto:sage [2011/05/18(水) 23:19:05.17 .net] 乱数で数値nの約数の合計って使えないの? 結構バラバラなんだけど
339 名前:デフォルトの名無しさん mailto:sage [2011/05/18(水) 23:21:48.27 .net] とりあえず検定の結果を示してもらわんとなんとも。 それで線形合同法の推奨されてるパラメータを越える成績ならともかく。
340 名前:デフォルトの名無しさん mailto:sage [2011/05/18(水) 23:58:05.10 .net] 数値nをどこから持ってくるのか詳しく聞かせてもらおうじゃないか
341 名前:デフォルトの名無しさん mailto:sage [2011/05/19(木) 16:36:50.88 .net] ぶっちゃけそこはn=n+(秒針)みたいなでいいと思う あとn/2/(nの約数の合計)なら多分1〜0しかでない
342 名前:デフォルトの名無しさん mailto:sage [2011/06/12(日) 19:32:33.48 .net] RDRANDで疑似乱数オワタ?
343 名前:デフォルトの名無しさん mailto:sage [2011/06/12(日) 21:41:33.09 .net] >>336 software.intel.com/file/36945 >8.6 >RDRAND returns random numbers that are supplied by a cryptographically secure, >deterministic random bit generator (DRBG). The DRBG is designed to meet the NIST >SP 800-90 standard. The DRBG is re-seeded frequently from a on-chip non-deterministic >entropy source to guarantee data returned by RDRAND is statistically >uniform, non-periodic and non-deterministic. 超訳: RDRAND 命令は、暗号論的に安全である**決定的な**ランダムビット生成器(DRBG)により供給される乱数を返す。 DRBG は NIST SP 800-90 csrc.nist.gov/publications/nistpubs/800-90/SP800-90revised_March2007.pdf に適合するように設計されている。 DRBG はチップに内蔵されている非決定的なエントロピー源により、定期的に初期値を再与されているため、 その結果、RDRAND命令は統計的に均一かつ非周期的、非決定的なデータを生成することが保証されている。 オンチップ-エントロピー源の出来如何に関わるという印象を受けますが、さて、どうでしょうか?
344 名前:デフォルトの名無しさん mailto:sage [2011/06/12(日) 22:06:24.66 .net] なんで擬似乱数が終わるんだよ? 分からない奴は黙っとけ
345 名前:デフォルトの名無しさん mailto:sage [2011/06/12(日) 22:08:35.00 .net] 容易に再現できる乱数列が必要な応用があるとか全く知らないんだろ
346 名前:デフォルトの名無しさん mailto:sage [2011/06/16(木) 00:25:21.98 .net] #include <stdio.h> #include <stdlib.h> #include <pthread.h> #define NUM_THREAD 8 void *th_main(void *arg){ unsigned i, sum = 0; for(i = 0; i < 1000; i++) sum += rand(); printf("Thread#%d: sum = %u\n", pthread_self(), sum); } int main(){ int i; pthread_t th[NUM_THREAD]; srand(time(NULL)); for(i = 0; i < NUM_THREAD; i++) pthread_create(&th[i], NULL, th_main, NULL); for(i = 0; i < NUM_THREAD; i++) pthread_join(th[i], NULL); return 0; } rand()ってスレッドごとに独立した系列の乱数列返すの? 既出だったらすいません。 環境はcygwin+gccです。
347 名前:デフォルトの名無しさん mailto:sage [2011/06/16(木) 13:48:55.52 .net] そもそもrandがスレッドセーフである保証がない。 スレッドセーフでない関数の読み出しにはロックをかけろ。 疑似乱数の実装がスレッドローカルならスレッドIDとタイムスタンプを組み合わせてseedに使うかな
348 名前:デフォルトの名無しさん mailto:sage [2011/06/16(木) 21:37:26.52 .net] >>340 rand_r()は実装されてないの? シミュレーションとかに使うなら、当然もっとまともな乱数使うべきなんだけど
349 名前:デフォルトの名無しさん mailto:sage [2011/06/16(木) 22:04:02.90 .net] randってアルゴリズムからして処理系依存だから ドキュメント読むしかないと思うが
350 名前:天使 ◆uL5esZLBSE mailto:sage [2011/07/03(日) 19:51:40.73 .net] 2011年、Ruby,Perl,PHP,Pythonって並べたときにさ ここで、Ruby以外を選ぶ奴ってマジでなんなんだろうな ゴミは何いってもゴミ
351 名前:デフォルトの名無しさん mailto:sage [2011/07/03(日) 20:36:04.58 .net] おや知らないうちに、MTの周期の短い奴が
352 名前:デフォルトの名無しさん mailto:sage [2011/07/03(日) 21:16:56.21 .net] 内部ベクトルぽ周期がxorshift128に似てるね テストしてみるか
353 名前:デフォルトの名無しさん [2011/07/18(月) 01:12:26.71 .net] 初カキコというか質問があるんですが
354 名前:デフォルトの名無しさん mailto:sage [2011/07/18(月) 01:23:00.97 .net] うーん… XorShiftでいいや。
355 名前:デフォルトの名無しさん [2011/07/18(月) 01:27:26.98 .net] パワフルプロ野球スレでcupsを256にすれば天才選手(低確率で出る
356 名前:初期能力が強い選手)が出ると聞きました 乱数のことはよくわからないんですがそのcupsという項目があって それを256に合わせればいいという認識でよろしいんでしょうか それがあってるとして、 乱数は数値化しないとそれにあわせることはできないのでしょうか もしくは数字だけが分かっていればなんとかなるものですか? [] [ここ壊れてます]
357 名前:デフォルトの名無しさん mailto:sage [2011/07/18(月) 01:28:07.97 .net] すいません…ageてしましました…
358 名前:デフォルトの名無しさん mailto:sage [2011/07/18(月) 01:35:15.25 .net] ゲームの話は板違い
359 名前:デフォルトの名無しさん [2011/07/18(月) 01:37:58.95 .net] >>351 しゅません、ここしか見つからなくて…
360 名前:デフォルトの名無しさん mailto:sage [2011/07/25(月) 07:45:02.26 .net] >>348 ttp://raluck.exblog.jp/7153886/
361 名前:デフォルトの名無しさん mailto:sage [2011/07/25(月) 19:27:51.78 .net] 乱数の「精度」って記述初めて見たぞ?言いたいことは判らなくも無いが。
362 名前:デフォルトの名無しさん mailto:sage [2011/07/25(月) 19:32:37.26 .net] 普通、品質って言うわな。 シードとサンプルの長さと、どのような検定で、どういう風に結果が悪いのか、 定量的なことが書いてあれば一読に値すると思うが、これではわけわからん。
363 名前:デフォルトの名無しさん mailto:sage [2011/07/25(月) 19:37:41.28 .net] ゲームに使うとかいろいろな種を試したとか 乱数の事なんか何にも分かってないんだろう 悪いけどそんな個人ブログなんか読む価値ないよ
364 名前:デフォルトの名無しさん mailto:sage [2011/07/25(月) 19:37:53.89 .net] つーかウィキペディアのXorShiftの記事にも「精度」って言葉が使ってある。 誰だよほんとにもう。
365 名前:デフォルトの名無しさん mailto:sage [2011/07/26(火) 12:24:34.03 .net] ja.wikipedia.org/w/index.php?title=Xorshift&action=history > 2011年7月25日 (月) 22:05 MetaNest (会話 | 投稿記録) (1,890バイト) > (疑似乱数列の評価として「精度」なんて形容を使うのは聞いたことがない) 自分が聞いたことがないから間違っている、 という理由で編集する前に他の記事を確認してください。 www.google.co.jp/search?q=%E4%B9%B1%E6%95%B0+%E7%B2%BE%E5%BA%A6+site%3Aja.wikipedia.org 「精度」はどのくらいのビット数で示される範囲で乱数になっているかという意味で使われているようです。 つまり品質の一部分ですね。
366 名前:デフォルトの名無しさん mailto:sage [2011/07/26(火) 12:37:39.46 .net] それはwikipediaのノート内で議論すべきでは
367 名前:デフォルトの名無しさん mailto:sage [2011/07/26(火) 19:22:02.57 .net] 漏れは精度っていうのは誤差の大小だと思っていた。
368 名前:デフォルトの名無しさん mailto:sage [2011/07/26(火) 19:28:23.63 .net] 一体何の誤差なのか
369 名前:デフォルトの名無しさん mailto:sage [2011/07/26(火) 20:21:03.30 .net] 理想的な分散から外れる誤差というのはあるんじゃね
370 名前:ななし。 [2011/07/27(水) 14:04:51.54 .net] カ オ ス ラ ウ ン ジ ゆ る せ な ぁ い ー
371 名前:デフォルトの名無しさん mailto:sage [2011/07/27(水) 16:02:15.11 .net] the art of computer programinngの2巻の証明の行間が開きすぎだったから 細部まで証明しましたが何か?
372 名前:デフォルトの名無しさん mailto:sage [2011/07/27(水) 22:37:01.04 .net] 頭いいね!
373 名前:デフォルトの名無しさん mailto:sage [2011/08/02(火) 16:16:05.44 .net] 擬似乱数の偏りってビットごとの偏りとか周期性もちゃんと見たほうがいいと思うんだけどねえ。 乱雑性検定の一覧とか出したほうがいいんじゃないの
374 名前:デフォルトの名無しさん mailto:sage [2011/08/02(火) 16:42:04.28 .net] まさにそれをやってるのがdiehard testsじゃないの
375 名前:デフォルトの名無しさん mailto:sage [2011/08/02(火) 19:08:01.33 .net] その、「ビットごとの」は「周期性」にもかかってる? ていうか現代的な生成法で特定のビット位置のみ変な特性があるとかまず考えられないように思うけど。 線形合同法ぐらいだと下の桁はダメダメだが。
376 名前:デフォルトの名無しさん mailto:sage [2011/08/02(火) 19:15:45.81 .net] >「精度」はどのくらいのビット数で示される範囲で乱数になっているかという意味で使われているようです。 これ、初期値によっちゃ10個ぐらい0が続いてもどうする?
377 名前:デフォルトの名無しさん mailto:sage [2011/08/02(火) 19:17:27.23 .net] >>367 そうなんだけど>353の人にお勧めしたい。 ちゃんと
378 名前:した統計を取る気があるが知らないだけのようなので。 >>368 両方。ビットの周期性も、全体としての周期性も。 線形合同法を意識して書いたからその通りですね。 [] [ここ壊れてます]
379 名前:デフォルトの名無しさん mailto:sage [2011/08/02(火) 19:45:25.22 .net] > どのくらいのビット数で示される範囲で乱数になっているかという意味 数式で書いてくれ、で終わりだろこんな文
380 名前:デフォルトの名無しさん mailto:sage [2011/08/03(水) 04:39:55.82 .net] それより問題は>>348 がTinyMTを試した結果なぜXorshiftを選択したかだな
381 名前:デフォルトの名無しさん mailto:sage [2011/08/03(水) 19:21:14.73 .net] 内部ベクトルって見て楽しいのかね
382 名前:デフォルトの名無しさん mailto:sage [2011/08/03(水) 19:57:03.18 .net] 見て楽しいかどうかは人それぞれ 4ビットでシフトレジスタ ttp://upload.wikimedia.org/wikipedia/commons/7/7f/LFSR-F4.GIF
383 名前:デフォルトの名無しさん mailto:sage [2011/08/04(木) 00:13:01.69 .net] 楽しくなければ乱数じゃない!
384 名前:デフォルトの名無しさん mailto:sage [2011/08/04(木) 09:30:26.00 .net] グレイコードってやつだな。
385 名前:デフォルトの名無しさん mailto:sage [2011/08/04(木) 10:37:52.94 .net] グレイコードは1度にハミング距離が1しか変化しないコードだろ
386 名前:デフォルトの名無しさん mailto:sage [2011/08/04(木) 10:48:53.38 .net] なんだ・・・ただ1づつ足していくだけかクダラネ。
387 名前:デフォルトの名無しさん mailto:sage [2011/08/04(木) 12:02:14.43 .net] ハミング距離も知らんのか
388 名前:デフォルトの名無しさん mailto:sage [2011/08/04(木) 12:20:06.08 .net] すごいすごいすごい ハミング距離を知っているなんて凄いねーー エライネー 天才だね〜
389 名前:デフォルトの名無しさん mailto:sage [2011/08/04(木) 19:22:19.62 .net] いやあそれほどでも(クィッ!
390 名前:デフォルトの名無しさん mailto:sage [2011/08/26(金) 11:30:52.08 .net] 復帰
391 名前:デフォルトの名無しさん mailto:sage [2011/11/07(月) 00:15:56.56 .net] 擬似乱数ではないのでスレ違いかもしれないが ちょっとコンセプトを思いついたので実装してみた。 netrand-test.appspot.com/
392 名前:デフォルトの名無しさん mailto:sage [2011/11/07(月) 00:34:50.29 .net] 何に使うんだそれは
393 名前:デフォルトの名無しさん mailto:sage [2011/11/07(月) 07:01:49.82 .net] /dev/random のような用途?
394 名前:デフォルトの名無しさん [2011/11/23(水) 11:19:10.85 .net] なんか加減算だけでそれっぽいのができたぜ www42.atwiki.jp/syugyou?cmd=upload&act=open&pageid=250&file=mon13.html
395 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 22:49:37.46 .net] >>386 SFMTに対して、どこがアドバンテージあるの? 周期2^216091-1とかだぞ。
396 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 22:57:01.60 .net] 出力範囲が1000(10ビット未満)というのもな 32ビット精度必要なら4個を組にして使うわけだが,その上での一様性も相当疑わしい
397 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 08:38:35.87 .net] 出現回数をカウントできるようにしたぜ
398 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 20:48:49.64 .net] お知識拝借 次のような擬似乱数生成方法を探しております シード(頻繁には変化しない入力値)のほかにいくつかの入力値(頻繁に変化、1,2,3など近い値が入力される) があって、それら入力値を入れると必ず決まった擬似乱数を生成する、というような乱数生成方法 当初XorShiftをアレンジすれば出来ると思ったのですが、シード以外の入力値が近いと 結果返ってくる値も近いようなものしか出来ず使えませんでした。 こういったタイプの擬似乱数関数として良好なものはありますでしょうか もしくはどういった風にXorShiftを改造すればこういったものが実現できそうでしょうか 乱文失礼、お力添えお願い申し上げます
399 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 01:02:45.31 .net] 要するにハッシュ関数的な要素が欲しいんでしょ 入力値のハミング距離が近くても出力値のハミング距離が遠くなるように ハッシュ関数通せばいいよ
400 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 01:04:32.98 .net] ハッシュ関数、初耳ですがちょっと調べてみます
401 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 01:13:57.92 .net] 毎回srandしてるようにも読めるな そうでないなら適当に読み捨てれば?
402 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 01:37:08.54 .net] >>390 どれぐらい「近いようなもの」でなければよいのか、 はっきりしてもらわないと何ともならんのじゃないか?