問題タブ [random-seed]

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.

0 投票する
1 に答える
9730 参照

scala - Scala Randomランダムオブジェクトを作成するときにシードは何をしますか

私はscalaにかなり慣れていないので、これはばかげた質問かもしれません。シードを使用するときは知っていnextInt(seed)ますが、オブジェクトを作成するとき、シードは何のためにあるのでしょうか? たとえば、次のコード行で:

これは、使用を続ける場合などの数値の結果に影響を与えないrnd.nextInt(100)ようです。

0 投票する
3 に答える
548 参照

c - 1 つの乱数ジェネレーターに対してのみ異なる乱数を生成し、他の乱数を同じに保つ方法

drand48 とプログラムの多くの部分を使用するプログラムがあります。プログラムの要件は、プログラムが異なる実行で異なる数を生成する必要がある部分を除いて、プログラムが毎回同じ数を生成する必要があるようなものです。

プログラムの最初に使用するsrand(time(NULL))と(多くのフォーラムで提案されているように)、プログラムを複数回実行するとすべての数値が変更されます。

関連するsrand(time(NULL))ループ内で (プログラムの実行全体で) 変更を行う場合、何も起こらず、乱数の変更もありません。

これに対する解決策はありますか???

0 投票する
1 に答える
1464 参照

ruby - Rubyのランドの有効なシード範囲は?

Ruby は PRNG を「周期が 2**19937-1 の修正された Mersenne Twister」として実装します。1

私が MT を理解する方法は、それが 2^32 の異なるシードで動作するということです。私を混乱させるのは、Random.new(seed)のような任意に大きな数を受け入れることRandom.new(2**100)です。

ただし、(論理的な) 衝突を見つけることができませんでした:

2 つの異なるシードとの衝突を回避しながら、できるだけ多くの異なるシードを使用したいという意味で、MT の最大シード範囲を利用したい場合、これを実現するシード範囲は何ですか?

Ruby のランダムな実装の内部で何が起こっているのかを理解しようとしましたが、あまり理解できませんでした。https://github.com/ruby/ruby/blob/c5e08b764eb342538884b383f0e6428b6faf214b/random.c#L370

0 投票する
4 に答える
83828 参照

random - Lua で一様乱数を生成する

私は Lua でマルコフ連鎖のプログラミングに取り組んでおり、その 1 つの要素として乱数を一様に生成する必要があります。私の質問を説明するための簡単な例を次に示します。

私の問題は、このプログラムを複数回再実行すると ( mash F5)、まったく同じ乱数が生成され、サンプル関数がまったく同じ配列要素を選択することになります。ただし、最後の印刷行を何度も繰り返すことによって、単一のプログラム内にサンプル関数への多くの呼び出しを含めると、適切なランダムな結果が得られます。

これは私の意図ではありません。適切なマルコフ疑似乱数テキスト ジェネレーターは、同じ入力で同じプログラムを複数回実行し、毎回異なる疑似乱数テキストを出力できるはずだからです。を使用してシードをリセットしようとしましたmath.randomseed(os.time())が、これにより、乱数分布が均一ではなくなります。私の目標は、上記のプログラムを再実行し、毎回ランダムに選択された番号を受け取ることができるようにすることです.

0 投票する
1 に答える
555 参照

java - getInt(int n) メソッドで Java の RNG のシードを取得する

私は Java RNG がどのように機能するかにかなり興味があります。getLong()メソッドを使用すると非常に簡単で、getInt()と 2 つの値があることを読みました。getInt(int n)の値を知ってシードを取得することに興味がありnます。

getInt(n)通常使用し val = bits % n;、 まで繰り返すので、bits - val + (n-1) >= 0)ビットnext(31)なので val == ビット (mod n)

最初の数字と一致する可能性のあるすべての数字のペアをテストするブルートフォースをテストしましたが、これは非常に長く、コンピューターにとっては困難です。

効率的な方法でシードを取得する方法について、他に何かアイデアはありますか?