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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2015, 21:05   #1
Korlet
Пользователь
 
Регистрация: 02.09.2015
Сообщений: 18
Вопрос Генерация случайных чисел (Pascal)

Написать программу, находящую при генерации случайных чисел повторяющиеся значения и подсчитывающую количество шагов между ними. Для генерации чисел использовать линейный конгруэнтный метод.
Использовать метод Р. Ковэю.
---
вот что написал я:

Код:
program Generaciya;
uses crt;
var x0, a, c, m, n: integer;
    x: array of integer;
    
procedure Posledovatelnost;
var x0, a, c, m, n: integer;
    x: array of integer;
  begin
  writeln('Программа, находящая при генерации случайных чисел повторяющиеся значения и подсчитывающая количество шагов между ними.');
  writeln('Введите x0, большее или равное нулю:');
  readln(x0);
  writeln('Введите a, большее или равное нулю:');
  readln(a);
  writeln('Введите c, большее или равное нулю:');
  readln(c);
  writeln('Введите m, большее x0, a и c:');
  readln(m);
  writeln('Введите количество генерируемых чисел:');
  readln(n);
  n:=n+1;
  setlength(x, n);
  n:=n-1;
   for var i:=0 to n-1 do x[i+1]:=(a*x[i]+c) mod m;
   if x0 mod 4=2 then
   for var i:=0 to n-1 do x[i+1]:=x[i]*(x[i]+1) mod m;
   writeln('Сгенерированные числа:');
   for var i:=0 to n-1 do
   writeln(x[i]);
  end;
  
begin
 Posledovatelnost;
end.
Фигня получается.

Последний раз редактировалось Аватар; 13.12.2015 в 21:52.
Korlet вне форума Ответить с цитированием
Старый 13.12.2015, 22:21   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

В каком плане фигня?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 13.12.2015, 22:33   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
for var
Наверно это фигня. Randomize и Random не подходят? Хотя, если for var, то наверняка не подходят
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.12.2015, 23:16   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
.. Хотя, если for var, то наверняка не подходят
Вдруг понадобилась переменная i, а просто добавить её в строку var вверху - шариат не позволяет.
Вот и сделал... типа, как в Си.

PS Кстати, только что заметил, что этих объявлений var - 2 одинаковых. Именно в данном случае, два не надо, одно можно удалить. Лучше удалить верхнее.

Последний раз редактировалось type_Oleg; 13.12.2015 в 23:21.
type_Oleg вне форума Ответить с цитированием
Старый 13.12.2015, 23:53   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Коллеги, не знаю, открою ли я для Вас Америку, но сообщаю, что есть такой мутант языка Паскаль, как PascalABC.NET
в нём программа из поста #1 компилируется и работает.

думаю, что "фигня" автор отнёс к тому, какие случайные числа генерятся.
Но тут, по сути вопроса я ничего сказать не могу, извините...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.12.2015, 00:18   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
PascalABC.NET
Атас, я даже погуглил перед тем как писать, а вдруг от жизни отстал. Гугл промолчал. Ну если так, то извиняюсь перед ТС. Но random надеюсь там есть. Или аналог
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.12.2015, 00:30   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

да, конечно, там есть Random()
но проблема в том, что у автора темы суть в том, чтобы использовать свой личный алгоритм генерации ПСЧ:
Цитата:
Для генерации чисел использовать линейный конгруэнтный метод.
Использовать метод Р. Ковэю.
ну и потом исследовать полученную последовательность псевдослучайных чисел.

Если я правильно понял, что ему надо, конечно...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.12.2015, 00:52   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так пусть в x[0] начальное значение засунет, а то от нуля пляшет скорее всего в цикле. Да и за пределы массива выскочит - при i=n-1 попытка записи в x[n], а массив от 0 до n-1
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 14.12.2015 в 00:55.
Аватар вне форума Ответить с цитированием
Старый 14.12.2015, 06:06   #9
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Я так думаю (так как шапочка телепата на реставрации), что товарищ не может подобрать коэффициенты, чтобы получить устойчивую длинную последовательность псевдослучайных чисел.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 14.12.2015, 06:46   #10
Korlet
Пользователь
 
Регистрация: 02.09.2015
Сообщений: 18
Сообщение

Программа-то работает, просто я не могу её доделать. Не хватает подсчёта количества шагов между повт. значениями и использования метода Ковэю. Да и правда, всегда с нуля начинает...
Korlet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генерация случайных чисел (Pascal) Korlet Помощь студентам 6 02.10.2015 20:02
(turbo pascal) Генерация 37 случайных чисел (0..1, real)и запись их в файл в формате ХХ,ХХ. bikmai4ik Помощь студентам 7 05.12.2013 16:07
Генерация случайных чисел Vodolazky Помощь студентам 1 14.12.2011 16:29
Генерация случайных чисел LBlonde Общие вопросы по Java, Java SE, Kotlin 4 30.11.2011 21:20
Генерация случайных чисел Kati Помощь студентам 2 19.10.2010 21:28