擬似乱数発生器について語ろうか。その2
前スレ
擬似乱数
http://pc11.2ch.net/test/read.cgi/tech/1146071975/
関連スレ
【危険】とんでもプログラム告発スレッド【悪質】
http://pc11.2ch.net/test/read.cgi/tech/1191860116/
SIMD-oriented Fast Mersenne Twister (SFMT):
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html
探検
疑似乱数2
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2007/10/17(水) 22:34:59499デフォルトの名無しさん
2016/10/08(土) 07:32:49.80ID:U+ATce89 >>498
とりあえず、全bit使おうとするのは良くないというのは基本だと思うが
だからこそ、内部で32bitとかで種を持っているにもかかわらず、
標準Cでの要求が14bitとかそういう話になる
単純に割って使う(シフトでの下位bit切り捨てに相当)んじゃなく、上位もマスクして切り捨てて使うのが常識
とりあえず、全bit使おうとするのは良くないというのは基本だと思うが
だからこそ、内部で32bitとかで種を持っているにもかかわらず、
標準Cでの要求が14bitとかそういう話になる
単純に割って使う(シフトでの下位bit切り捨てに相当)んじゃなく、上位もマスクして切り捨てて使うのが常識
500デフォルトの名無しさん
2016/10/08(土) 07:47:16.98ID:PgGGpXVn >>498
>ちなみに俺はここ数年、線形合同法で最初のseed設定時に乱数を1024個プールして、
>array[rand(max) % 1024];
>みたいな感じでランダムで取り出して使う。(そしてそこに次の乱数をセットする)。
それはDonald Knuth先生のリオーダーアルゴリズムBに近いな
内部のバッファリングは256だけどC++のstd::knuth_b(シャッフルオーダーね)がある
>ちなみに俺はここ数年、線形合同法で最初のseed設定時に乱数を1024個プールして、
>array[rand(max) % 1024];
>みたいな感じでランダムで取り出して使う。(そしてそこに次の乱数をセットする)。
それはDonald Knuth先生のリオーダーアルゴリズムBに近いな
内部のバッファリングは256だけどC++のstd::knuth_b(シャッフルオーダーね)がある
501デフォルトの名無しさん
2016/10/08(土) 14:10:54.10ID:PgGGpXVn >>498
>rand(max) % 1024
この部分は下位ビットの偏りが諸に関連しているよ
因みにstd::knuth_bではstd::minstd_rand0を元にバッファサイズで正規化して
値を取り出しているから、その演算のせいで他のに比べると重い
周期も数学的に不明だったかな
>rand(max) % 1024
この部分は下位ビットの偏りが諸に関連しているよ
因みにstd::knuth_bではstd::minstd_rand0を元にバッファサイズで正規化して
値を取り出しているから、その演算のせいで他のに比べると重い
周期も数学的に不明だったかな
502デフォルトの名無しさん
2016/10/08(土) 18:34:54.73ID:KfBpvv2w あんま深く考えてなかったけどそうかもね。
ただし検定は通ってるから、まあいいっちゃいいけど。
実用上の実質的な周期はそのまま線形合同法と同じだよ。
まあ300回くらいなら多く回しても実用上にも問題ないけど、そんなのは計算しない。
>rand(max) % 1024
これは素数にすることでノーコストで解決できるから気が向いた時にでもやっとくよ。
ただ、どんなに下位ビットが偏ってた所で、
araay[988]の中身 と araay[986]の中身の因果関係、もしくは共通点は何か、と聞かれても判明させるのは不可能に近いと思うけどね。
>上位もマスクして切り捨てて使うのが常識
ただ線形合同法はそれでいいとしてxorshiftは捨てるべきビットが特定できないような?
まあ俺はシャッフルして何も捨てないのが好きらしい。
全部が若干遅いんだけどね。特にseed植える時。
ただし検定は通ってるから、まあいいっちゃいいけど。
実用上の実質的な周期はそのまま線形合同法と同じだよ。
まあ300回くらいなら多く回しても実用上にも問題ないけど、そんなのは計算しない。
>rand(max) % 1024
これは素数にすることでノーコストで解決できるから気が向いた時にでもやっとくよ。
ただ、どんなに下位ビットが偏ってた所で、
araay[988]の中身 と araay[986]の中身の因果関係、もしくは共通点は何か、と聞かれても判明させるのは不可能に近いと思うけどね。
>上位もマスクして切り捨てて使うのが常識
ただ線形合同法はそれでいいとしてxorshiftは捨てるべきビットが特定できないような?
まあ俺はシャッフルして何も捨てないのが好きらしい。
全部が若干遅いんだけどね。特にseed植える時。
503デフォルトの名無しさん
2016/10/26(水) 12:50:05.40ID:X3TP1P6r 奥村先生のアルゴリズム事典にある乱数の改良法だぬ
xorshiftは生で使うと俺も気持ち悪さを感じるので線形合同法を足してる
xorshiftは生で使うと俺も気持ち悪さを感じるので線形合同法を足してる
504デフォルトの名無しさん
2016/12/10(土) 11:46:44.94ID:DCOx50tb 統計の知識は中高どまり(平均・中央値・分散程度か)なので
乱数用に内部状態が32ビットしか確保できないソフトに対して単にxorshiftを採用して「検定もいい結果らしいし」と気にしていなかった
思ったより良くないとなると,プールしておいてランダムに取り出す方法も使えないし悩むな
乱数用に内部状態が32ビットしか確保できないソフトに対して単にxorshiftを採用して「検定もいい結果らしいし」と気にしていなかった
思ったより良くないとなると,プールしておいてランダムに取り出す方法も使えないし悩むな
505デフォルトの名無しさん
2016/12/14(水) 12:22:06.08ID:7W6mxi0O 1個使ったら100個捨てるとか
RNGが保証してるのは周期だけだと割りきって頑張って調律するとか
RNGが保証してるのは周期だけだと割りきって頑張って調律するとか
506デフォルトの名無しさん
2016/12/14(水) 23:07:36.84ID:2UzQxrtp 素人の生半可なオレオレ乱数はやらない方が身のため
507デフォルトの名無しさん
2016/12/31(土) 21:32:49.60ID:VVtKGmEj 2017は素数か
508デフォルトの名無しさん
2017/01/01(日) 11:37:31.32ID:DY9bt0tG あけましておめでとうございます
return x = x * 2017 + 1;
return x = x * 2017 + 1;
509デフォルトの名無しさん
2017/01/05(木) 01:13:53.38ID:yRe7g27Q 一個使って100個捨てるとか馬鹿の極み
コストを101倍にしてどうする。
コスト2倍も出せば問題のない乱数を作れるのに
コストを101倍にしてどうする。
コスト2倍も出せば問題のない乱数を作れるのに
510デフォルトの名無しさん
2017/01/05(木) 06:28:07.10ID:42rV0dht S/N比最低の2ちゃんでドヤっってる場合じゃないよな
511デフォルトの名無しさん
2017/01/05(木) 20:10:30.85ID:atmVS5w4 S/N比最低というのは、乱数としては素晴らしいことだ。
512デフォルトの名無しさん
2017/01/06(金) 09:49:58.47ID:zAIptLYs つまり2chの書き込みをもとに乱数列を作る生成器を作れば…?
513デフォルトの名無しさん
2017/01/06(金) 12:01:18.30ID:CHjfjTiP 片寄りが多くて一様じゃないからなあ……
514デフォルトの名無しさん
2017/01/06(金) 14:32:25.52ID:eb3De0HO515デフォルトの名無しさん
2017/02/22(水) 09:39:50.93ID:BVjvbr4Q BIG 不正
いまGoogleで検索したら、すごいのがでますね
いまGoogleで検索したら、すごいのがでますね
516デフォルトの名無しさん
2017/02/22(水) 09:56:53.06ID:BVjvbr4Q 「14試合×5口分の予想結果が2回続けて全く同じという極めて不自然な結果が出力され、
システムの不具合や不正ではないかと一騒動となっている(中略)
日本スポーツ振興センターと楽天から調査結果の発表がなされたのだが、
くじは確かに販売されたものである」
スポーツくじ「BIG」でランダムなはずの予測結果が2連続で一致するも「偶然」との回答 - エキサイトニュース
http://www.excite.co.jp/News/it_g/20170221/Slashdot_17_02_20_1619238.html
2017年2月22日 09時50分
システムの不具合や不正ではないかと一騒動となっている(中略)
日本スポーツ振興センターと楽天から調査結果の発表がなされたのだが、
くじは確かに販売されたものである」
スポーツくじ「BIG」でランダムなはずの予測結果が2連続で一致するも「偶然」との回答 - エキサイトニュース
http://www.excite.co.jp/News/it_g/20170221/Slashdot_17_02_20_1619238.html
2017年2月22日 09時50分
517デフォルトの名無しさん
2017/02/22(水) 12:02:19.51ID:Acz49b5N 一人が予想して当たればその確率かもわからんけど、
1000人が予想した場合の期待値は1000倍になるんじゃね
1000人が予想した場合の期待値は1000倍になるんじゃね
518デフォルトの名無しさん
2017/02/23(木) 07:14:10.76ID:WFbVQHcp 2回とも当たったんならすごいけどな
519デフォルトの名無しさん
2017/02/23(木) 07:17:16.12ID:WFbVQHcp 数枚買ったうちの2枚が連続して同じだったのか
そりゃ金返せってなるな
最初から買わんけど
そりゃ金返せってなるな
最初から買わんけど
520デフォルトの名無しさん
2017/02/23(木) 07:23:45.91ID:WFbVQHcp セキュリティ上の理由から
アルゴリズム公開しないって書いてあるけど
全組み合わせを逐次予想するんじゃなくて
元々予想したくじを用意してあって
そこから適当に買った枚数分選んでくるとかだったら
重複確率は上がりそうだな
たまたま購入者が気付いただけで
気付かずに捨てられた券で
過去の重複してたのもっとあるんじゃないか
アルゴリズム公開しないって書いてあるけど
全組み合わせを逐次予想するんじゃなくて
元々予想したくじを用意してあって
そこから適当に買った枚数分選んでくるとかだったら
重複確率は上がりそうだな
たまたま購入者が気付いただけで
気付かずに捨てられた券で
過去の重複してたのもっとあるんじゃないか
521デフォルトの名無しさん
2017/02/23(木) 08:54:22.37ID:907E0Xet どんな擬似乱数でも、内部的に状態を示す値を保持していて、それを元に次回の乱数を計算で出す
その値を初期化するのがsrand等だけど、その時に限らず常に値は持っているので
偶然内部の値が同じなんてこともよくある
ただし、普通は同じ値であっても、別の用途に乱数を使うので、同一であったことが問題になることはない
けれど、もし、14試合分の予想の直前の段階での内部的な値が、前回と全く同じ値だったとすると
そこから算出される各試合結果を示す乱数も、全く同じ値が出て
予想結果も全く同じものになる
偶然同じ状態値を持っている時に同じ買い方をしたために、全く同じ予想値になった
状態値のbit数が少ない(例えば普通に線形合同法だと32bitか)のを修正するか、
あるいはアルゴリズム的に同じ擬似乱数だけで順番に算出することを見直すか
そういうことをしないと、同じことが再び起こる可能性はある
擬似乱数だと防げないけどね
宇宙が始まるより低い確率云々ってのはナンセンス
擬似乱数の内部値が一致していて、単純に擬似乱数を利用するアルゴリズムだったというだけ
これは珍しいけど起こりうること
その値を初期化するのがsrand等だけど、その時に限らず常に値は持っているので
偶然内部の値が同じなんてこともよくある
ただし、普通は同じ値であっても、別の用途に乱数を使うので、同一であったことが問題になることはない
けれど、もし、14試合分の予想の直前の段階での内部的な値が、前回と全く同じ値だったとすると
そこから算出される各試合結果を示す乱数も、全く同じ値が出て
予想結果も全く同じものになる
偶然同じ状態値を持っている時に同じ買い方をしたために、全く同じ予想値になった
状態値のbit数が少ない(例えば普通に線形合同法だと32bitか)のを修正するか、
あるいはアルゴリズム的に同じ擬似乱数だけで順番に算出することを見直すか
そういうことをしないと、同じことが再び起こる可能性はある
擬似乱数だと防げないけどね
宇宙が始まるより低い確率云々ってのはナンセンス
擬似乱数の内部値が一致していて、単純に擬似乱数を利用するアルゴリズムだったというだけ
これは珍しいけど起こりうること
522デフォルトの名無しさん
2017/02/23(木) 13:04:42.59ID:UXkH84Wv 宇宙云々はあくまで真の乱数が使われていた場合でしょ
523デフォルトの名無しさん
2017/02/23(木) 13:15:51.47ID:eG9NqkD/ >>521
状態機械で内部の値が一緒だったらその次もその次もずっと同じ値を出し続けるんじゃね
状態機械で内部の値が一緒だったらその次もその次もずっと同じ値を出し続けるんじゃね
524デフォルトの名無しさん
2017/02/23(木) 13:37:51.43ID:lN59Dhjm 真の乱数なら、種の設定は (少なくとも実用上は) いかなる場合も最初の一度きりで二度と結果がループすることはない
525デフォルトの名無しさん
2017/02/23(木) 13:40:24.47ID:lN59Dhjm と言っても宇宙の何かの物理法則が真の乱数を作ることはないのだろうと思うけど。
全ては必ず有限らしいし、その中でのチューリング完全なんだろうだし。
全ては必ず有限らしいし、その中でのチューリング完全なんだろうだし。
526デフォルトの名無しさん
2017/02/23(木) 13:59:17.36ID:7wYQlXII 一つずつ乱数生成してないのかもね
527デフォルトの名無しさん
2017/02/23(木) 16:45:07.24ID:eG9NqkD/528デフォルトの名無しさん
2017/02/23(木) 16:46:44.91ID:WFbVQHcp529デフォルトの名無しさん
2017/02/23(木) 21:50:11.33ID:5geihC2S >>523
「前回(の乱数取得時)と同じ」という意味ではなく
「前回試合予想をした時と同じ」という意味ね
どちらも、同じ値から同じ試合の予想をして、
結果、前週と全く同じ予想が14試合x5口分で起きた
「前回(の乱数取得時)と同じ」という意味ではなく
「前回試合予想をした時と同じ」という意味ね
どちらも、同じ値から同じ試合の予想をして、
結果、前週と全く同じ予想が14試合x5口分で起きた
530デフォルトの名無しさん
2017/02/24(金) 14:00:51.79ID:xRGcfmim メルセンヌツイスタ使ってなかったんだろ
531デフォルトの名無しさん
2017/02/24(金) 19:02:56.20ID:3z/u0Cfz 用途が用途だから暗号論的擬似乱数の適応だろ
/dev/urandomでもCryptGenRandomでも
/dev/urandomでもCryptGenRandomでも
532デフォルトの名無しさん
2017/02/25(土) 15:09:25.02ID:u8Ry8YI7 状態変数が同じになったから同じ数列が出たんじゃねーよ。
二セット分繰り返す数列を出力する状態変数だっただけだろ。
http://science3.2ch.net/test/read.cgi/math/1088351567/424-425
円周率の 93299341 桁目から 07214545 という数列が出るそうだ。
まあ大体その辺で出そうな桁数だ。
おそらく無限に調べれば 1/10,0000,000 より少しだけ少ない頻度で出現するだろう。
そしてそのうちの 1/10,0000,000 は二回続く、つまり 1/10+E16 程度で 0721454507214545 という数列が出現するであろう。
目立つ組み合わせだから話題だが、どの二セットを取っても、その組み合わせが発生する確率は同じだ。
二セット分繰り返す数列を出力する状態変数だっただけだろ。
http://science3.2ch.net/test/read.cgi/math/1088351567/424-425
円周率の 93299341 桁目から 07214545 という数列が出るそうだ。
まあ大体その辺で出そうな桁数だ。
おそらく無限に調べれば 1/10,0000,000 より少しだけ少ない頻度で出現するだろう。
そしてそのうちの 1/10,0000,000 は二回続く、つまり 1/10+E16 程度で 0721454507214545 という数列が出現するであろう。
目立つ組み合わせだから話題だが、どの二セットを取っても、その組み合わせが発生する確率は同じだ。
533デフォルトの名無しさん
2017/02/25(土) 16:57:29.92ID:usTDxsWv e なら割と早く出て来る
534デフォルトの名無しさん
2017/03/10(金) 21:31:43.44ID:ARsP6JfD PCGってどうなん?
ttp://www.pcg-random.org/
説明読んだりビデオ観たりした限りでは優れているみたいなんだけども
アルゴリズム的には線形合同法とXorShiftのハイブリッドの様な感じで
結構単純な構造なんだけど、高速で良質な乱数を生成するとか
因みに2年前に発表されているみたいなんだけど知らんかったわ
ttp://www.pcg-random.org/
説明読んだりビデオ観たりした限りでは優れているみたいなんだけども
アルゴリズム的には線形合同法とXorShiftのハイブリッドの様な感じで
結構単純な構造なんだけど、高速で良質な乱数を生成するとか
因みに2年前に発表されているみたいなんだけど知らんかったわ
535デフォルトの名無しさん
2017/04/23(日) 03:06:26.50ID:H8Cvp+NU 周期性と分布バランスが目的用途に特化できるならそれが最強だろ
536デフォルトの名無しさん
2017/05/11(木) 11:22:40.04ID:yPF7Zec4 最強(笑)
537デフォルトの名無しさん
2018/01/01(月) 10:34:52.74ID:Adreh4LC538デフォルトの名無しさん
2018/05/23(水) 20:53:42.20ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
BZKM3
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
BZKM3
539デフォルトの名無しさん
2018/07/05(木) 01:00:09.16ID:RfoszcD2 5E7
540Goldwasser
2019/01/03(木) 13:41:14.69ID:r8gE2use ご覧あれーw
#include "pch.h"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#define N 32
unsigned char x1[N], x2[N], x3[N];
void rp(unsigned char* a) {
int i, j, x;
for (i = 0; i < N; i++) {
a[i] = i;
}
for (i = 0; i < N - 2; i++) {
// rand from i+1 to N-1
j = (rand() % (N - 1 - i)) + i + 1;
// swap a[i] and a[j]
x = a[j];
a[j] = a[i];
a[i] = x;
}
if (a[N - 1] == N - 1) {
a[N - 1] = a[N - 2];
a[N - 2] = N - 1;
}
}
#include "pch.h"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#define N 32
unsigned char x1[N], x2[N], x3[N];
void rp(unsigned char* a) {
int i, j, x;
for (i = 0; i < N; i++) {
a[i] = i;
}
for (i = 0; i < N - 2; i++) {
// rand from i+1 to N-1
j = (rand() % (N - 1 - i)) + i + 1;
// swap a[i] and a[j]
x = a[j];
a[j] = a[i];
a[i] = x;
}
if (a[N - 1] == N - 1) {
a[N - 1] = a[N - 2];
a[N - 2] = N - 1;
}
}
541デフォルトの名無しさん
2019/01/03(木) 13:41:50.45ID:r8gE2use 後半
int data() {
int i, j = 0, k = 0;
unsigned int a[N];
unsigned int z[N];
unsigned char w[N];
for (i = 0; i < N; i++)
a[i] = rand()%256;
for (i = 0; i < N; i++)
z[i] = 0;
k = 0;
while (k< 4000) {
for (i = 0; i < N; i++)
z[i] ^= a[x2[i]];
for (i = 0; i < N; i++)
a[i] ^= z[i];
for (i = 0; i < N; i++)
w[i] = x1[x2[x3[i]]];
*x2 = *w;
k++;
for(i=0;i<N;i++)
printf("%u,",a[i]);
}
printf("\n");
return 0;
}
int data() {
int i, j = 0, k = 0;
unsigned int a[N];
unsigned int z[N];
unsigned char w[N];
for (i = 0; i < N; i++)
a[i] = rand()%256;
for (i = 0; i < N; i++)
z[i] = 0;
k = 0;
while (k< 4000) {
for (i = 0; i < N; i++)
z[i] ^= a[x2[i]];
for (i = 0; i < N; i++)
a[i] ^= z[i];
for (i = 0; i < N; i++)
w[i] = x1[x2[x3[i]]];
*x2 = *w;
k++;
for(i=0;i<N;i++)
printf("%u,",a[i]);
}
printf("\n");
return 0;
}
542Goldwasser
2019/01/03(木) 13:42:22.37ID:r8gE2use 最後
int main() {
rp(x1);
rp(x2);
data();
return 0;
}
int main() {
rp(x1);
rp(x2);
data();
return 0;
}
543デフォルトの名無しさん
2019/01/06(日) 08:57:50.46ID:kWOVO8kw 誰かTestU01の使い方を教えてください
544デフォルトの名無しさん
2019/02/24(日) 02:35:20.31ID:LCfXPkf7■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- Perfume・あ~ちゃんの結婚相手の一般男性、吉田カバンの社長と判明 [977261419]
- 地球から無限km先の場所ってどうなっているの?
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- 日本、高市のお陰で破滅に近づくwwwwwwww
- AIアーティストだけど作品公開する
- 岡田克也「軽々しく存立危機事態とか言うべきじゃない」高市早苗「台湾で武力攻撃が発生したらどう考えても日本の存立危機事態」 [931948549]
