Я пытаюсь написать простую игру в стиле ASCII со случайно сгенерированным миром для терминала Android, используя IDE c4droid. Он имеет поддержку C ++ и в основном я генерирую array[width][height]
плитки с использованием правила rand()%2 - 1
создает проходимую плитку, 0
это стена. Но есть проблема. Каждый раз, когда я «случайно» генерирую карту, она выглядит одинаково — потому что rand()
не совсем случайно.
Я слышал об использовании энтропии, созданной жесткими дисками или другими частями. Проблема в том, что я использую его на Android, так что это странно для меня, потому что C ++ не так используется, как Java, поэтому я не смог найти решение в Google.
такой короткий вопрос: как я могу генерировать «довольно реальные» случайные числа, используя c ++ на Android?
вам нужно заполнить генератор случайных чисел srand(time(NULL))
, Это позволяет компьютеру использовать системное время для поиска псевдослучайных чисел.
ссылка на ссылку: http://www.cplusplus.com/reference/clibrary/cstdlib/srand/
РЕДАКТИРОВАТЬ: было бы разумно заметить, что вам нужно только запустить функцию rand () только один раз, обычно в начале программы.
int main()
{
srand(time(NULL)) //only needed to be called ONCE
//code and rand functions afterward
}
Я думаю, что rand () должен работать для того, что вы делаете. Вы запускаете генератор случайных чисел?
srand(time(NULL));
// Should be a different set of numbers each time you run.
for(unsigned i = 0; i < 10; ++i) {
cout << rand() % 2 - 1;
}