Android — программа генерирует одно и то же «случайное» число при каждом выполнении

Я пытаюсь написать простую игру в стиле ASCII со случайно сгенерированным миром для терминала Android, используя IDE c4droid. Он имеет поддержку C ++ и в основном я генерирую array[width][height] плитки с использованием правила rand()%2 - 1 создает проходимую плитку, 0 это стена. Но есть проблема. Каждый раз, когда я «случайно» генерирую карту, она выглядит одинаково — потому что rand() не совсем случайно.
Я слышал об использовании энтропии, созданной жесткими дисками или другими частями. Проблема в том, что я использую его на Android, так что это странно для меня, потому что C ++ не так используется, как Java, поэтому я не смог найти решение в Google.
такой короткий вопрос: как я могу генерировать «довольно реальные» случайные числа, используя c ++ на Android?

3

Решение

вам нужно заполнить генератор случайных чисел 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
}
10

Другие решения

Я думаю, что 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;
}
3

По вопросам рекламы [email protected]