← Все вопросы

случайное число в паскале, random выдаёт одно и то же каждый раз

Задан 10 месяцев назад915 просмотров2 ответа
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. чуть игру не сломал на этом

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект