2016-07-15 58 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