← Все вопросы
случайное число в паскале, random выдаёт одно и то же каждый раз
5
Пишу игру 'угадай число', надо чтобы комп загадывал случайное от 1 до 100. Но random у меня каждый запуск выдаёт одни и те же числа, как будто не случайные вообще. Бесит.
var
n: integer;
begin
n := random(100);
writeln(n);
end.
Как сделать чтоб реально по-разному было? И как получить от 1, а не от 0?
2 ответа
10
✓ Принятый ответ — помог автору
Тебе не хватает randomize — это команда, которая 'перемешивает' генератор по текущему времени. Без неё паскаль каждый раз стартует с одной точки, отсюда одинаковые числа. Ставь её один раз в начале:
var
n: integer;
begin
randomize;
n := random(100) + 1;
writeln(n);
end.
Теперь про диапазон:
random(100)даёт число от 0 до 99 (саму 100 не включает!).- чтобы было от 1 до 100 — прибавь 1:
random(100) + 1. - общая формула для диапазона от a до b:
random(b - a + 1) + a. Например от 5 до 20:random(16) + 5.
Главное: randomize пиши ОДИН раз в самом начале, а не в цикле, иначе наоборот станет хуже.
4
ага, randomize это прям обязательная штука, без неё всё предсказуемо. я ещё всегда забываю что random(6) это 0..5, а не 1..6, для кубика надо +1. чуть игру не сломал на этом
Ваш ответ
Войдите, чтобы ответить на вопрос.