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

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

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

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

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

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

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

+ Использовать метод Р. Ковэю.
Заключается он в следующем:
Для случая, когда m представляется степенью двойки, интересный квадратичный метод предложил Р. Ковэю:
X0 mod 4=2, Xn+1=Xn(Xn+1) mod 2e, n0.
Данный метод гарантирует достаточно большой период.

Заранее благодарен,
Студент Фёдоров.
Korlet вне форума Ответить с цитированием
Старый 27.09.2015, 20:26   #2
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Цитата:
Сообщение от Korlet Посмотреть сообщение
Студент Фёдоров.
А родители знают, что ты ЭТИМ занимаешься?

Исходный код из статьи в Википедии
Код:
#define RAND_MAX 32767 
 
static unsigned long int next = 1;
 
int rand(void)
{
next = next * 1103515245 + 12345;
return (unsigned int)(next/65536) % RAND_MAX;
}
 
void srand(unsigned int seed)
{
next = seed;
}
Копируется в Pascal
Код:
program primer;
 
{LCG - Linear congruential generator}
const
  LCG_M = 32767;
  LCG_A = 1103515245;
  LCG_C = 12345;
const
  {состояние}
  LCG_Curr: dword = 1;
 
  procedure LCG_Init(a: word);
  begin
    LCG_Curr := a;
  end;
 
  function LCG: word;
  begin
    LCG_Curr := LCG_Curr * LCG_A + LCG_C;
    LCG := hi(LCG_Curr) mod LCG_M;
  end;
 
var
  k: integer;
begin
  LCG_Init(1); {можно инициализировать секундами текущего времени}
  for k := 1 to 5 do
    writeln(LCG);
end.
Это, правда, не Ковэю, но переделка - небольшая.
FPaul вне форума Ответить с цитированием
Старый 27.09.2015, 20:32   #3
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Код:
  function LCG: word;
  begin
    LCG_Curr := LCG_Curr * (LCG_Curr+1);
    LCG := hi(LCG_Curr) mod LCG_M;
  end;
FPaul вне форума Ответить с цитированием
Старый 02.10.2015, 00:38   #4
Korlet
Пользователь
 
Регистрация: 02.09.2015
Сообщений: 18
По умолчанию

Нихрена не работает.
Korlet вне форума Ответить с цитированием
Старый 02.10.2015, 08:47   #5
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

У чёткого пацана - чёткая диагностика.
FPaul вне форума Ответить с цитированием
Старый 02.10.2015, 09:45   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

FPaul, согласен.
Умеют же люди нескольким словами чётко и конкретно обрисовать ситуацию.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.10.2015, 20:02   #7
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Да. И ещё обидно за плохую грамматику - в данном случае "ни" - частица, а не предлог. А ведь интеллигент должен ещё материться уметь... Куда катится мир...

В общем, Korlet, посмотрел ещё раз код. Я действительно некорректно реализовал метод. Так будет корректнее.
Код:
  function LCG: word;
  begin
    LCG_Curr := (LCG_Curr * (LCG_Curr + 1)) mod LCG_M;
    LCG := LCG_Curr;
  end;
Там ещё в самой программе остались некорректные вещи. Я надеюсь, что после грамматики, ты найдёшь в интернете описание метода и самостоятельно исправишь две строки. Пойдёт на пользу.
FPaul вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
(turbo pascal) Генерация 37 случайных чисел (0..1, real)и запись их в файл в формате ХХ,ХХ. bikmai4ik Помощь студентам 7 05.12.2013 16:07
Генерация случайных чисел N.i.k.o.l.a.y. Помощь студентам 1 30.10.2012 21:38
Генерация случайных чисел vlados007 Visual C++ 4 15.07.2012 19:18
Генерация случайных чисел (С#,C++) Bellami Помощь студентам 4 09.07.2012 01:38
Генерация случайных чисел от -1 до 1 Shketer Общие вопросы Delphi 4 19.12.2009 23:43