Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2012, 16:15   #1
Heng
Форумчанин
 
Регистрация: 27.02.2012
Сообщений: 117
По умолчанию Random и Randomize

Кто может, поясните мне на примерах, чем отличается Random и Randomize ?
например код. Что измениться если убрать Randomize ??

Код:
randomize;     
    for j:=1 to 5 do
        for i:=1 to 5 do
        begin
            a[i,j]:=random(50);
        end;
Heng вне форума Ответить с цитированием
Старый 14.12.2012, 16:17   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

При разных запусках программы будут получаться одинаковые результаты.
Abstraction вне форума Ответить с цитированием
Старый 14.12.2012, 17:22   #3
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

последовательно несколько раз вызывая random, получаем последовательность псевдослучайных чисел.
При каждом запуске программы - одну и ту же.
Для того, чтобы последовательности при разных запусках различались, нужно один раз вызвать randomize.
s-andriano вне форума Ответить с цитированием
Старый 14.12.2012, 18:35   #4
Heng
Форумчанин
 
Регистрация: 27.02.2012
Сообщений: 117
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
последовательно несколько раз вызывая random, получаем последовательность псевдослучайных чисел.
При каждом запуске программы - одну и ту же.
Для того, чтобы последовательности при разных запусках различались, нужно один раз вызвать randomize.
Чет я попробовал без Randomize несколько раз перезапустить и сгенерировать последовательность чисел, и всегда они были разные !
точно также и при Random все последовательности были разные !
Heng вне форума Ответить с цитированием
Старый 14.12.2012, 21:01   #5
referent
Пользователь
 
Регистрация: 31.01.2012
Сообщений: 49
По умолчанию

Цитата:
Сообщение от Heng Посмотреть сообщение
Чет я попробовал без Randomize несколько раз перезапустить и сгенерировать последовательность чисел, и всегда они были разные !
точно также и при Random все последовательности были разные !
Если не использовать randomize, используется дефолтная таблица чисел, сгенерированная, если не ошибаюсь, при запуске среды разработки. Она не всегда удачна. Я сам долго не использовал randomize, пока не увидел своими глазами недочеты. Но для учебных целей (заполнить массив числами, чтоб не вручную, например) вполне можно обойтись и без отдельного вызова randomize.
referent вне форума Ответить с цитированием
Старый 14.12.2012, 21:02   #6
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Randomize - Это процедура, которая инициализирует генератор псевдослучайных чисел (запускает).

Random без аргументов - это функция, которая возвращает случайное дробное число в диапазоне [0;1) (если не путаю).

Если передать в эту функцию аргумент, являющийся целым числом N, то функция вернёт целое число а диапазоне от 0 до N-1 включительно.
Вадим Мошев вне форума Ответить с цитированием
Старый 14.12.2012, 21:53   #7
Heng
Форумчанин
 
Регистрация: 27.02.2012
Сообщений: 117
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Randomize - Это процедура, которая инициализирует генератор псевдослучайных чисел (запускает).

Random без аргументов - это функция, которая возвращает случайное дробное число в диапазоне [0;1) (если не путаю).

Если передать в эту функцию аргумент, являющийся целым числом N, то функция вернёт целое число а диапазоне от 0 до N-1 включительно.
Если честно, то все равно непонятно =( Какую пользу Random'у приносит Randomize.
Heng вне форума Ответить с цитированием
Старый 14.12.2012, 22:05   #8
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Перво-наперво, какой у Вас компилятор?
Poma][a вне форума Ответить с цитированием
Старый 14.12.2012, 22:20   #9
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Цитата:
Сообщение от Heng Посмотреть сообщение
Если честно, то все равно непонятно =( Какую пользу Random'у приносит Randomize.
Програма с randomize:
Код:
randomize;     
    for j:=1 to 5 do

        begin
            writeln(random(50));
        end;
запуск 1
Код:
10
18
34
33
14
запуск 2
Код:
28
1
25
7
37
запуск 3
Код:
33
39
11
6
22
программа без randomize:
Код:
    for j:=1 to 5 do

        begin
            writeln(random(50));
        end;
запуск 1
Код:
27
29
35
42
30
запуск 2
Код:
27
29
35
42
30
запуск 3
Код:
27
29
35
42
30
Так нагляднее?
Все тривиальное просто

Последний раз редактировалось whatever; 14.12.2012 в 22:24.
whatever вне форума Ответить с цитированием
Старый 14.12.2012, 22:37   #10
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Поправлю Вадима Мошева: Randomize - инициализирует генератор случайных чисел.

Heng, выше довольно информативно сказано, что random - это не случайные числа, а вычисляемые по какому-либо заранее известному правилу. Поэтому при каждом запуске программы числа будут повторятся. Представь, что тебе показывают запись на которой человек бросает монетку. Эта монетка случайным образом падает орлом или решкой. Если ещё раз пересмотреть запись, то случайные выпадения орла и решки будут чередоваться так же как и при прошлом просмотре - вот это RANDOM.
Это очень удобно для дебага кода, а в реальных програмах так не делают.

В реальных программах добавляют randomize, которая модифицирует рандом так, что он выводит уже "по-настоящему" случайные числа. В этом случае второй раз запись с бросанием монетки тебе никто не покажет. Операторы снимут новый фильм с другим человеком и другой монеткой. И даже оператор будет другим, а в кадр могут попасть даже девочки без одежды
eoln вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
random/randomize Ya_Aston Помощь студентам 8 17.12.2010 19:49
Delphi Randomize tanek Помощь студентам 5 31.05.2010 20:52
Randomize )Игнат( Паскаль, Turbo Pascal, PascalABC.NET 13 03.02.2009 16:51
Randomize в DBGrid-e artemavd Общие вопросы Delphi 8 02.01.2009 20:11
Функция Randomize MaXXX Общие вопросы Delphi 2 23.09.2008 11:42