Процедурные функции с семенем (например, генератор дорог)

Я искал вокруг, но не нашел твердого ответа. Я создаю игру в 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());
         ...
     }   
  }
}

person Eric    schedule 12.03.2014    source источник
comment
Вы должны заполнять функцию Math.random() одним и тем же значением каждый раз   -  person Mathias711    schedule 12.03.2014


Ответы (2)


Да, Math.random() не поддерживает раздачу, и если вам это нужно, вы должны реализовать свой собственный PRNG. Взгляните на этот ответ Просматриваемый генератор случайных чисел JavaScript для JS, это довольно просто чтобы перенести один из ответов на as3.

person fsbmain    schedule 12.03.2014
comment
Спасибо за ссылку :), +1 - person Eric; 12.03.2014

Грант Скиннер разработал отличную библиотеку для генерации случайных чисел, я бы рекомендовал используйте его, а не Math.random()

... Я решил создать класс для генерации случайных чисел на основе начального числа. Это также удобно для других целей, таких как статистика, тестирование и разработка игр (например, синхронизация или воспроизведение игрового процесса). Это было довольно просто, потому что у Flash Player уже есть механизм для генерации последовательности случайных чисел на основе начального числа, скрытого в его API, — BitmapData.noise().

person Nicolas Siver    schedule 12.03.2014
comment
Спасибо, очень полезно, +1 - person Eric; 12.03.2014