Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 3
Регистрация: 08.04.2016
Сообщений: 9
1

Непонятна работа связки randomize - random

27.12.2016, 20:43. Показов 1468. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
При создании процедуры заполнения массива случайными цифрами, в прогоне программы через RUN массивы получаются с одинаковыми данными, в прогоне через DEBUG пошагово - все нормально, данные разные, всем подвох? Или как всегда кривость рук?
Пример
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Procedure loadmas(var a: tmas);
Var
I: integer;
Begin
Randomize;
For I:= 1 to csize  do a[i]:= random(50)+1;
End;
 
Var
X, y, z: tmas;
Begin
Loadmas(x);
Loadmas(y);
Loadmas(z);
Код не весь, но смысл ясен.
Непойму почему через отладчик все норм, а через run массивы равны, проясните если незатруднит.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.12.2016, 20:43
Ответы с готовыми решениями:

Функция Random и процедура Randomize в PascalABC .Net
Изучаю Pascal по учебнику О.Деревенец "Песни о Паскале". Сам учебник обучает языку на примерах...

Программа для проверки знаний учеников с использованием ф-ии random, randomize
Доброго времени суток. Вот программа на Паскале: program noobles; uses crt; var...

Что такое randomize и random ?
процедура в паскале randomize и random это одно и тоже?

Random and randomize
Доброго времени суток. Пишу программу "Электронный тест". Суть программы заключается в том, что...

4
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7769 / 4598 / 2823
Регистрация: 22.11.2013
Сообщений: 13,077
Записей в блоге: 1
27.12.2016, 21:15 2
В модуле System есть переменная RandSeed. Ее значение используется для вычисления значения очередного псевдослучайного числа (а затем и ее значение изменяется). По умолчанию ее значение 0, число, которое при этом выдаст Random() тоже 0. Randomize берет значение текущего времени и из него формирует псевдослучайное значение для RandSeed.

У вас вызов Randomize происходит в рамках одной временной единицы, RandSeed получает одинаковое значение и отсюда одинаковые порожденные последовательности.
1
0 / 0 / 3
Регистрация: 08.04.2016
Сообщений: 9
27.12.2016, 21:34  [ТС] 3
Спасибо за развёрнутый ответ, а какие могут быть варианты заполнения нескольких массивов? Делать промежуточный с количеством элементов равный сумме элементов остальных, и далее из него заполнять необходимые? Больше в голову ничего не идёт...
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7769 / 4598 / 2823
Регистрация: 22.11.2013
Сообщений: 13,077
Записей в блоге: 1
27.12.2016, 21:44 4
Лучший ответ Сообщение было отмечено peahematop как решение

Решение

Вариант простой, зовем в начале 1 раз:
Pascal
1
2
begin
  Randomize;
0
0 / 0 / 3
Регистрация: 08.04.2016
Сообщений: 9
27.12.2016, 21:52  [ТС] 5
Заработало)
0
27.12.2016, 21:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2016, 21:52
Помогаю со студенческими работами здесь

random и randomize
Компилятор Visual Studio 2012 орет на radnomize и random. Как их заменить?? вот мой код: #define...

Random randomize в vs13
как записать в массив случайные числа vs13 почему-то нет такой команды(random)

Randomize & random
нужно было сгенить рандомно пару чисел, но увы засад компилятор материт Randomize и random,...

Не определен random() и randomize()
Насколько я знаю эти функции находятся в stdlib.h , он подключен почему выскакивает ошибка? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru