2016-07-15 13 views
0

最初に言語Imはノード(javascript)ですが、実際にはその背後にあるコンピュータサイエンスを探しています。シード/キーから大規模な配列/データを作成

基本的に私が持っているのは、2,000 x 2,000の2次元配列です(つまり、2,000エントリの長い配列のすべてのエントリに2,000エントリあります)。この配列の中には、値0,1,2,3などがあります。これらは、それぞれがどのように共通しているかについて、異なる希少性を持って、異なっています。私がしたいのは、この配列をキーに基づいて生成することです。つまり、キー/シードの長さ、ジョブを完了できる妥当な長さです。同じキーが同じキーであれば同じキーを、同じキーであれば別のキーと同じキーを生成したい。基本的にキーを取って、より長いデータを生成しますが、認識できないパターンはこのデータには現れません。

私の考えは、ある種の小数点以下のキーを持つことです。配列の位置を取得するために定数の束と掛け合わされますが、tbhはどこから始めるのが実際にはありません。本質的には、どのようにして鉱夫クラフトがシードを取ってそれをマップに変え、同じシードが同じマップを生成するかのようなものです。

+0

あなたのニーズを説明するための例を挿入できますか? –

答えて

1

シード可能な任意の乱数ジェネレータ(RNG)は、特定のシードに対して同じ一連のランダム値を与えます。&は決定可能なパターンを持たないべきです。残念ながら、the default RND for javascript is not seedable;このSEの投稿によると、you will need to write your own or use a someone else's

シード可能なRNGを取得したら、各エントリに対してランダム値&を取得してから、ランダム値を目的の出力値に変換します。変換にはさまざまな方法があります。これは、70%、20%、7%& 3%は1,2を取得するために与え

if(rand_value <= 70){ 
    output_value = 1; 
} 
else if(rand_value <= 90){ 
    output_value = 2; 
} 
else if(rand_value <= 97){ 
    output_value = 3; 
} 
else { 
    output_value = 4 
} 

:あなたはわずか数を持っている場合、私はこのような何かをするだろう(random_valueが1 & 0の間であると想定) 、3または4であり;必要に応じて値を調整します。注:出力値が多い場合は、これを反映するために質問を編集する必要があります。これは、巨大なif elseブロックよりも賢明な解決方法があるためです。

+0

ありがとう、播種した乱数生成器が何だったのか混乱しましたが、今私はそれがまさに私が必要とするものであることを認識しています – Ralph

関連する問題