2016-07-15 46 views
0

首先在語言我寫的節點(JavaScript的),但真正的進出口尋找其背後的計算機科學,以及如何真正做到這一點,而不僅僅是代碼。創建大陣/從種子數據/鍵

基本上我有什麼是2,000×2000二維數組(我的意思是在這個2,000項長數組中每個項目都有自己的2000項)。在這個數組中,我的值爲0,1,2 3等等。它們的距離是不同的,每個區域的顯示方式都有不同的稀疏程度。我想要做的是基於一個關鍵,IDC這個數組的鍵/種子是多久,只是一個合理的長度,可以完成這項工作。我想要相同的密鑰來生成相同的數組,如果它是相同的密鑰和不同的密鑰,如果它是一個不同的密鑰。基本上需要一個密鑰,並從中產生更長的數據,但是沒有可識別的模式出現在這些數據中。

我的想法是有一個關鍵是一些小數點,我乘以一堆常量來獲得數組中的位置,但是tbh我真的不知道從哪裏開始。本質上它就像我的世界如何將種子變成地圖,同一顆種子會再次產生相同的地圖。

+0

可以插入一個例子來說明你的需要? –

回答

1

任何可以播種的隨機數發生器(RNG)將給出給定種子的相同系列隨機值&應該沒有可確定的模式。不幸的是,the default RND for javascript is not seedable;根據這個SE post,you will need to write your own or use a someone else's

一旦你有一個可植入的RNG,對於每一個入口,首先得到一個隨機值&然後將隨機值轉換成所需的輸出值。轉換有多種不同的方式;如果你只有幾個,我會做這樣的事情(假定random_value是0之間& 1):

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 
} 

這給出了一個70%,20%,7%& 3%獲得1,2 ,分別爲3個或4個;根據需要調整值。注意:如果你有很多輸出值,你應該編輯你的問題來反映這個問題,因爲有更好的方法來解決這個問題,而不是一個巨大的if else塊。

+0

謝謝你,我很困惑,什麼是一個種子隨機數生成器,但現在我意識到這正是我需要的 – Ralph