我已经到处找了,但没有找到一个可靠的答案。我正在用AS3开发一款游戏。我在为游戏生成随机地图(2D贴图)时没有任何问题,这基本上是由随机数组成的。我如何获得完全相同的结果,所有的时间传递一个种子参数到我的函数?
function generate(__xt:uint, __yt:uint){
var rnd:int;
for (var i:uint=0; i < __xt; i++){
for(var j:uint=0; j < __yt; j++){
rnd = Math.round(Math.random());
...
}
}
}
是Math.random()
不支持播种,如果你需要它,你必须实现你自己的PRNG
。看看这个答案Seedable JavaScript随机数生成器的JS
,这是很容易移植到as3
的答案之一。
Grant Skinner开发了一个很棒的生成随机数的库,我推荐使用它,而不是Math.random()
…我决定构建一个基于种子数生成随机数的类。这对于统计、测试和游戏开发(如同步或重玩游戏)等其他用途也很方便。这很简单,因为Flash Player已经有了一种机制,可以根据隐藏在api中的种子(种子)生成一系列随机数(种子)。