Оператор random - генератор случайных чисел

Оператор random - генератор случайных чисел


Часто в задачах требуется выполнить различные действия с большим количеством чисел. В таких случаях вводить все числа становится просто неудобно и долго. Для этого в Паскале придуман генератор случайных чисел - оператор random. От программиста лишь требуется задать числовые промежутки ( например от 2 до 50 ) , все остальное программа выполнит сама. Итак как добавить к коду программы оператор random .
Для начала необходимо предварительно описать оператор (то есть фактически мы сообщаем программе , что будет использован генератор случайных чисел ). Для этого необходимо ввести оператор randomize в промежутке после begin и до random (обычно оператор randomize ставят сразу после begin , так как это упрощает чтение кода ) . Затем идет присвоение оператора random к выбранной переменной. Делается это так:
Для Turbo Pascal
оператор:= random (max-min+1)+min;

- оператор - любая переменная
- min - целое число , не превышающее max
- max - целое число, большее min
Здесь min и max являются диапазонами генератора случайных чисел. Теперь для наглядности пример генератора случайных чисел от 2 до 5 .
var x:integer;
begin
randomize;
x :=random (4)+2;
end;

Здесь 4 - это результат выражения 5-2+1.
Для Pascal ABC
Здесь можно применять оператор random так же как и для Turbo Pascal , однако есть еще один вариант , более простой в использовании.
оператор:= random (min,max);

- оператор - любая переменная
- min - целое число , не превышающее max
- max - целое число, большее min
Чтобы разница лучше просматривалась решим тот же пример генератора случайных чисел от 2 до 5 этим способом.
var x:integer;
begin
randomize;
x :=random (2,5);
end;

Как уже стало заметно второй способ гораздо проще, однако его можно использовать только в Pascal ABC. А для тех , кого интересует код программы , где используется рандом без повтора генерируемых чисел я написал этот пост . В нем при генерации каждого числа происходит сравнение с предыдущем числом .
Понравилась новость? Добавь в закладки!
Хочешь получать свежие новости? Подпишись на обновления с сайта!
Рекомендуем посмотреть:
#31 | написал: Mr.Cheater | 8 февраля 2014 21:30 | ICQ: 360239964 | Пользователь offline

Группа: Администраторы
Публикаций: 33
Комментариев: 68
Цитата: Владимир
выводит ошибку: ожидалось имя процедуры или функции


Опишите конкретно, что именно вы вводили и где именно ошибка

#32 | написал: Edward | 13 марта 2014 21:12 | ICQ: |

Группа: Гости
Публикаций: 0
Комментариев: 0
как зделать что б рандом выдавал значение от -1000 до 1000 в turbo pascal

#33 | написал: Mr.Cheater | 24 марта 2014 19:34 | ICQ: 360239964 | Пользователь offline

Группа: Администраторы
Публикаций: 33
Комментариев: 68
Цитата: Edward
как зделать что б рандом выдавал значение от -1000 до 1000 в turbo pascal

если бы прочли для начала статью, вы бы не задавали этот вопрос

#34 | написал: nata | 11 ноября 2014 22:58 | ICQ: |

Группа: Гости
Публикаций: 0
Комментариев: 0
скажите пожалуйста,может ли рандом высчитать комбинации для лото .

#35 | написал: Александр | 22 ноября 2014 22:50 | ICQ: |

Группа: Гости
Публикаций: 0
Комментариев: 0
Здравствуйте!
Нужна консультация. Везде идет речь о генерации целых чисел. А возможно ли генерировать числа от 0 до 1 в определенном диапазоне, например от 0,7 до 0,8? Если можно, подскажите как.

#36 | написал: антагонист | 6 апреля 2015 21:44 | ICQ: |

Группа: Гости
Публикаций: 0
Комментариев: 0
у меня паскаль abc ругается на программу пишет что :функция с параметрами указанных типов не найдена. В чём проблема? вот код
var a,b:real;
begin
b:=0;
while b<>10 do
begin
randomize;
a:= random (-20, 20);
b:=b+1;
writeln(a);
end;
end.

#37 | написал: Mr.Cheater | 11 апреля 2015 00:17 | ICQ: 360239964 | Пользователь offline

Группа: Администраторы
Публикаций: 33
Комментариев: 68
Цитата: антагонист
у меня паскаль abc ругается на программу пишет что :функция с параметрами указанных типов не найдена. В чём проблема? вот код
var a,b:real;
begin
b:=0;
while b<>10 do
begin
randomize;
a:= random (-20, 20);
b:=b+1;
writeln(a);
end;
end.


Скорее всего у вас установленая старая версия Pascal ABC. У меня Ваш код работает нормально.

И еще : вам следует randomize поставить ДО цикла while , иначе на выходе будут одинаковые числа

#38 | написал: panda-san | 22 октября 2015 22:21 | ICQ: | Пользователь offline

Группа: Читатели
Публикаций: 0
Комментариев: 1
В заданому масиві К(14) знайти кількість та добуток парних елементів.Помогите плиз

#39 | написал: Макс | 24 ноября 2015 17:01 | ICQ: |

Группа: Гости
Публикаций: 0
Комментариев: 0
Помогите , нужна такая программа ,Ставка=1000 Бросаем 3 кубика , если число больше 12 то выйграли и ставка увеличивается в трое , а если проигрываем то ставка уменьшается в двое.Если числа на кубиках одинаковы то защитать победу, на этом всё , помогите пожалуйста!!!

#40 | написал: Михаил | 11 июня 2016 18:43 | ICQ: |

Группа: Гости
Публикаций: 0
Комментариев: 0
оператор:= random (max,min);

var x:integer;
begin
randomize;
x :=random (2,5);
end;


Вы пишите, что на пером месте максимальное число, а на втором минимальное. Но у вас в примере наоборот. Как я понял это не принципиально?

#41 | написал: Mr.Cheater | 20 июля 2016 17:05 | ICQ: 360239964 | Пользователь offline

Группа: Администраторы
Публикаций: 33
Комментариев: 68
Цитата: Михаил
оператор:= random (max,min);

var x:integer;
begin
randomize;
x :=random (2,5);
end;


Вы пишите, что на пером месте максимальное число, а на втором минимальное. Но у вас в примере наоборот. Как я понял это не принципиально?


Принципиально, это опечатка, исправил

#42 | написал: К | 23 апреля 2017 23:56 | ICQ: |

Группа: Гости
Публикаций: 0
Комментариев: 0
Pascal abc
не получается сделать рандом от -10 до +10

Добавление комментария

Ваше Имя:
Ваш E-Mail:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Вставка исходного кода Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера

Введите два слова, показанных на изображении: