2016-04-26 59 views
3

phpのrandom_int関数の分布はどうですか?phpのrandom_int()関数の分布

私はそれがgetrandom(2)/dev/urandomの分布になると思いますか?それらはどのように配布されますか?

random_intは、均一分散乱数生成器に使用できますか?

+0

が異なることがあります。「を生成します偏りのない結果が重大な場合に使用するのに適した暗号の乱数」である。これからは分布が一様であると仮定します。結局のところ、 'random_int'や'/dev/urandom'が統一されていなければ意味をなさないでしょう。なぜなら、他のディストリビューションのランダムなデータをユニフォームからランダムに生成するのは間違いありません。 – gordon

+0

あなたにとって重要なのは、それをテストしてみませんか?特定のディストリビューションが必要であると仮定すると、マッピング関数を生成するための最初のステップになります。 – symcbean

+0

@symcbeanは、私の理解から判断すると、ランダム性はハードウェア特有のものである可能性があるので、私の特定の環境のテストよりも一般的な概念に興味がありました。 – dfherr

答えて

0

random_intのためのPHPマニュアルから:

Windowsでは、CryptGenRandom()が常に使用されます。
Linuxの場合、利用可能であればgetrandom(2)システムコールが使用されます。
他のプラットフォームでは、/ dev/urandomが使用されます。だから、

分布はOS依存であることを意味し

...
、私はそれが元の質問に答えることは簡単ではないと思うのPHPのrandom_int関数の分布は何ですか? '.. Linuxでは、例えば、a discussionからおよそint getrandom(void *buf, size_t buflen, unsigned int flags);

[...] The GRND_RANDOM flag bit can be used to switch to the /dev/random pool, subject to the entropy requirements of that pool [...] 

ので、異なる実行時の引数に基づいて、ランダムな分布は、PHPのドキュメントから同じ OS ...

+0

'/ dev/random'と'/dev/urandom'は同じ乱数発生源を使用する可能性が高いため、配布が異なるとは思わないでしょう。 – gordon

+0

はい、あなたが正しいです...更新された答え... – MarcoS

+0

よく私は尋ねる前にドキュメントのその部分を読んでいます。それはおそらくgetrandom(2)や/ dev/urandomに追加されたのです。おそらくgetrandom(2)と/ dev/urandomの配布について尋ねているはずです。したがって、OSに依存する部分は正しいです。しかし、パーハブでは、ウランダムとgetrandom(2)の分布についての回答が得られますか?あるいは、異なるハードウェアを「ランダムなハードウェアノイズ」に変更して、ディストリビューションを変更することさえできますか? – dfherr