問題タブ [prng]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - この機能はプリイメージ耐性がありますか?
PRNG関数の強度をテストする方法の1つは、PRNG出力をランダム文字列から区別するテストを設計することです。いくつかのuまたはランダム文字列に対してPRNG(u)を出力するボックスが与えられます。出力がPRNGからのものかどうかを判断する必要があります。ハッシュ関数Hがこのテストに失敗したと仮定します。
それは、2番目の原像耐性がないことを意味しますか?
android - スレッドセーフなRNGAndroidNDK
BionicにスレッドセーフなRNGはありますか?Linuxの場合、あることは知っていますがrand_r()
、残念ながらこれはNDKの一部ではありません。
java - カスタム スレッド ローカル乱数ジェネレーター
今まで、私は常に昔ながらの方法で独自のスレッドを作成していました (1.5 Java 同時実行より前)。しかし、エグゼキューターなどをチェックしたいと思います。私は基本的にそれらの使用方法を知っていますが、私の場合、各スレッドに独自の乱数ジェネレーターが必要です。Java 1.7 には ThreadLocalRandom があり、これはまさに私が達成したいことですが、独自の PRNG (QMC であろうと他のものであろうと) を使用します。
もう一度:
8 つのスレッドのプールであるエグゼキューターを作成し、スレッドごとにローカルな独自のランダム ジェネレーターを使用する一連のタスクを与えたいと考えています (各スレッドには、異なるシードで作成された独自のインスタンスがあります)。それを行う最良の方法は何ですか?できれば、最もクリーンで最高のパフォーマンスを発揮します。スレッドローカルかな?私はそれを使用する必要はありませんでしたが、誰が知っていますか...
ありがとう、ミハル。
php - PHP の rand 関数は本当に悪いのでしょうか?
PRNG が使用するものよりも Mersenne Twister を使用するため、mt_rand()
overを使用することが推奨されていることは知っていますが、考慮されていないように見えるものがあります: ユーザー アクティビティです。rand()
rand()
実際、ユーザーの行動はかなりランダムであると見なすことができます。たとえば、任意の時点で、ユーザーが 1 つの機能の呼び出しをトリガーする可能性が 4%、ユーザーが3 つの呼び出しと をrand()
トリガーする可能性が 8%、ユーザーの 20% が 2 つの呼び出しをトリガーする可能性があります。ユーザーがページを読み込むと、PRNG が 1 つ進みます。rand()
shuffle()
rand()
結局のところ、NPC の動きが、ポケモン ゲームでの RNG の悪用を非常に苛立たせているのではないでしょうか?
それで、 にrand()
はパターンがありますが、ユーザーのアクティビティのランダム性との欠点を無関係rand()
にするのに十分な用途の多様性があることを心に留めておいてください。rand()
絶対的に言えば、mt_rand()
「よりランダム」です。しかし、これは人間の要素のエントロピーと比べてどうだろうか?
random - 真の乱数発生器をプログラムするのがなぜそんなに難しいのですか?
PRNG が真の RNG よりもプログラムしやすい理由がわかりません。典型的なプロセッサは、真の乱数を生成する作業を短時間で行うべきではありませんか?
hash - 暗号化ハッシュアルゴリズムをPRNGとして使用できますか?
MD5 / SHA256 / SHA512などをPRNGとして使用できますか?たとえば、整数シードが与えられた場合、擬似コードは次のようになります。
…まともなPRNG?(i
は増加する整数です。たとえば、出力は次のとおりです。
この質問の文脈では、「まともな」とは、出力の分散のみを指します。このように使用した場合、暗号化ハッシュ関数の出力は均一ですか?(ハッシュ関数に依存すると思いますが、すべての暗号化ハッシュも均一な出力を持つ必要がありますよね?)
注:暗号化ハッシュを使用しているため、これはメルセンヌツイスターと比較して遅いPRNGになることを認めます。私は速度には興味がなく、結果が安全であることに興味はありません。ただ、分布が正しいというだけです。
私の特定のユースケースでは、XKCDのジオハッシュに似たものを探しています。これは、分散したパーティによって簡単に実装され、全員が同じ答えに到達するという点です。Mersenne-Twisterは代用できますが、多くのターゲット言語ではあまり利用できません。(一部の言語には完全に欠けているものもあれば、生のU32出力にアクセスできないものもあります。SHA512は組み込みであるか、簡単に利用できます。)
c++ - 値の範囲間でランダムな double を生成する
現在、-32.768 から 32.768 の間で乱数を生成するのに問題があります。それは私に同じ値を与え続けますが、小数フィールドに小さな変化があります。例: 27.xxx.
Heres私のコード、助けていただければ幸いです。
javascript - VB スクリプトおよび Java スクリプトでの FIPS 承認の乱数ジェネレーター
私のプロジェクトは、クライアント側からサーバー側に乱数を送信することです。私の乱数は FIPS 196 によって承認される必要があるため、この乱数を VBscript と Javascript の両方で生成できる方法があるかどうか疑問に思います。ありがとうございました
r - 「L'Ecuyer-CMRG」RNGが使用されている場合、Rはシードをリセットしませんか?
R でいくつかの並列シミュレーションを行っていましたが、"L'Ecuyer-CMRG" rng を使用するとシードが変更されないことに気付きました。私は本「Parallel R」を読んでいましたが、オプション mc.set.seed = TRUE は、mclapply() が呼び出されるたびに各ワーカーに新しいシードを与える必要があります。
これが私のコードです:
編集:デスクトップとラップトップの両方(Ubuntu 12.04 LTSの両方)で同じことが起こります。
c++ - いくつの乱数ジェネレーターを使用する必要がありますか?
アプリケーションのさまざまなクラスが1つ以上の乱数を抽出する必要がある場合、適切な乱数シーケンスを生成するために、乱数ジェネレーターをどこで初期化する必要がありますか?
特に、ランダムフォレストをトレーニングするために、いくつかの決定木を構築する必要があります。各デシジョンツリーの構築には、次の手順が含まれます。
- データセット(複数行のデータで構成されている)がロードされます。
- このデータセットの一部の行は、新しいデータセットを構築するためにランダムに選択されます。この新しいデータセットは、ツリーの成長中に徐々に分割されます。
- この新しいデータセットは、決定木を成長させるために使用されます。各ノードを作成するには、この新しいデータセットのいくつかの行をランダムに選択する必要があります(1つのノードを作成する前に、この新しいデータセットのいくつかの小さな異なるサブセットをランダムに生成する必要があります) 。
上記の3つのステップは、各決定木の構築に対して実行されます。今説明した手順では、乱数の生成が数回発生します。たとえば、2番目のステップでは、各決定木が最初の決定木とはわずかに異なるデータセットでトレーニングされるようにする必要があります。したがって、乱数ジェネレーターは、等しいデータセットの生成を回避する必要があります(または、いずれの場合も、これが発生する可能性は非常に低いはずです)。 。
本質的に、この手順では、ランダム性の2つの原因を特定できます。
- ランダムなデータセットの生成
N
。それぞれが単一の決定木をトレーニングします。 M
ノードを作成する前に、特定のデータセットからランダムに抽出を実行する必要があります。
いくつの乱数ジェネレーターを使用する必要がありますか?ランダムフォレストを実装するクラスと、決定ツリーを実装する別のクラスがあるので、最初のクラス(最初のランダム性のソース)で乱数ジェネレーターを初期化し、2番目のクラスで別の乱数ジェネレーターを初期化すると思いましたクラス(ランダム性の2番目のソース)。これは正しいです?
一般に、正しい数の疑似乱数ジェネレーターを選択するためのガイドラインは何ですか?