-1

Linuxのgccコンパイラで乱数を生成するために使用される正確な方法を知りたいです。

線形一致ジェネレーターは、一般式を持つgccで乱数を生成するために使用されることを知っています。

X(n + 1)=(a * X(n)+ c)mod m

そして私は、使用される一般式がウィキペディアで与えられているようにこれらの定数値を持っていることを知りました:http: //en.wikipedia.org/wiki/Linear_congruential_generator

m = 2 ^ 3、a=1103515245および12345です。

ただし、これらの定数を指定して得られた結果は、gccのrand()関数によって得られた結果と一致しません。

誰かが私が間違っているところを助けてくれますか、それとも私が知らないことがありますか?

4

2 に答える 2

0

数値はこれと一致しますか: http://www.mathstat.dal.ca/~selinger/random/

それ以外の場合、ソース コードは次のとおりです: http://sourceware.org/git/?p=glibc.git;a=blob;f=stdlib/rand.c;h=92916e833f7fc94ac16a2bd047c33f8a6ef6ec49;hb=HEAD ここにつながる: http ://sourceware.org/git/?p=glibc.git;a=blob;f=stdlib/random.c;h=ff6bdd2b5d5a8f7633a914282f4c6ab1991df0cf;hb=HEAD

于 2012-12-20T18:44:55.200 に答える
0

DES::SetKey(unsigned long long int); への呼び出しがあるようです。stdlib.h では、これが Random Generator 関数と関係があるかどうかはわかりませんが、以前のバージョンの実際に DES を選択した暗号化/復号化システムとして使用した GNUPG は、乱数を生成するために使用されている可能性があります。

于 2014-12-06T13:52:55.917 に答える