Я пытаюсь создать случайное число/письмо, используя rand(), однако он просто возвращает одинаковое число/букву при каждом вызове.Генератор случайных чисел - не генерирует случайное число каждый раз
void Location::pick() {
srand(time(NULL));
x = rand() % fieldSize + 1;
int locy = rand() % fieldSize + 1; // rand y
switch (locy) {
case 1: y = 'a'; break;
case 2: y = 'b'; break;
case 3: y = 'c'; break;
case 4: y = 'd'; break;
case 5: y = 'e'; break;
}
}
fieldSize установлен в 5. Я использую srand() наверху. Ниже я вызываю функцию.
void Fleet::deployFleet() {
bool newLoc = true;
Location tmp;
for (int i = 0; i < fleetSize; i++) {
tmp.pick();
ships[i].setLocation(tmp);
}
}
fleetSize установлен на 5. ships [] представляет собой массив из 5 кораблей. setLocation() просто устанавливает местоположение судна для данного параметра.
Не используйте 'rand()', особенно не 'rand()% n'. Подробнее [здесь] (http://www.azillionmonkeys.com/qed/random.html). Вместо этого используйте 'srand' со временем в качестве параметра. –
вновь открылся, поскольку код немного отличается. Очень тесно: http://stackoverflow.com/questions/37701567/calling-a-random-number-generating-member-function-doesnt-produce-entirely-rand – NathanOliver
Все об этом коде не работает. Несколько посевов, используя 'time (NULL)' в качестве семени, используя 'rand()', используя '%', чтобы ограничить диапазон чисел ... Я даже не знаю с чего начать. – nwp