-1

200 行と 200 列のグリッドがあります。数値シードを使用して、ランダムな座標 i,j のペアを生成したいと考えています。このシードは、数値のペアを生成するたびに増加する値です。

40,000 個の値が生成された後、i=m および j=n の i,j および m,n がないため、座標のすべてのペアはそれらの間で一意です。

例えば:

seed 0: generates 43,12
seed 1: generates 154, 62

などなど…

シードは、同じ関数を使用した同じ入力が同じ結果を生成することを意味します。それで問題ありません。

コンピュータの時間などを使用すると 2 つの同一のペアが生成される可能性があるため、ある種の疑似乱数アルゴリズムが必要であることは承知していますが、どこから始めればよいでしょうか?

4

2 に答える 2

1

すべてのシードがランダムなポイントを返し、それらすべてのポイントが一意になるようにする場合、最も簡単な方法は、ポイントを配列に入れ、配列をシャッフルし、整数シードを使用してシャッフルされた配列にインデックスを付けることです。たとえば、seed=0たまたま最初の位置にシャッフルされた要素を取得します。

整数でペアを表す方が少し簡単に思えるので、0 から 40000 (つまり 200x200) の配列を作成し、これをシャッフルしてから、0 から 40000 の範囲のシードを使用しますn。ポイントペア利用、i=n%200およびj=(n-i)/200

もちろん、各シードが一意のポイントを返すようにするため、ポイントの数と同じかそれより少ない数のシードを使用する必要があります。

于 2013-04-29T22:22:04.687 に答える