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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2014, 00:57   #1
murcha
 
Регистрация: 19.10.2011
Сообщений: 3
Восклицание Конгруэнтный ГПСЧ

Доброй ночи!
Пишу ГПСЧ, почему-то вылетает на 65 цикле.
Вывод в memo2 делал - не переполняет int64. Как решить?
И кто знает какие проверки делают в этом генераторе?
Код:
const s = 1.5;
var i,n:Integer;
    a,x,c,m,Y:Int64;

begin
   a:=39530554;
   x:=55396773;
   c:=82118671;
   m:=85977174;
   for i:=1 to 1000 do
   begin
        Y:=(a*x0+c) mod m;
        a:= Round(a * s);
   end;

Последний раз редактировалось murcha; 23.10.2014 в 13:23.
murcha вне форума Ответить с цитированием
Старый 23.10.2014, 07:37   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
a:= Round(a * s);
А ниче что тут умножение огромного числа идет? Конечно у тебя переполнение будет )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2014, 11:26   #3
murcha
 
Регистрация: 19.10.2011
Сообщений: 3
По умолчанию

Есть ли возможность это как-то обойти?
Или хотя бы выводить в exit перед переполнением "а".
Try -> EXCEPT -> END будет просто указывать на ошибку.

Последний раз редактировалось murcha; 23.10.2014 в 11:29.
murcha вне форума Ответить с цитированием
Старый 23.10.2014, 11:39   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну в математике я не силен, поэтому не скажу.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2014, 13:34   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Try -> EXCEPT -> END будет просто указывать на ошибку.
Сбрасывай число да и все. Вставь там в блоке что-то вроде а:=Y; или a:=39530554;
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оценка качества ГПСЧ Veryn4ik1993 Помощь студентам 13 02.01.2014 13:15
Конгруэнтный метод hirosimarider C# (си шарп) 6 24.04.2012 14:48
конгруэнтный генератор псевдослучайных чисел cvbcvb Помощь студентам 0 10.05.2010 00:16