Current time: 29.11.2024, 02:30 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
нужна помощь по программированию
Author Message
Tent Offline

Posts: 429
Post: #31

Кто-нибудь когда-нибудь сталкивался с линейным конгруэнтным методом генерации псевдослучайных чисел?
Есть задача, реализованная на паскале:
Code:
Program _1;
var
a,c:integer; n,i,m,x,xo:longint;

function f(x:longint):longint; {vichislenie znacheniya chlena posledovatelnosti}
begin
  f:=(a*x+c) mod m;
end;

function item(N:longint):longint; {vichislenire poslednego chlena posledovatelnosti}
begin
  x:=xo;
  for i:=1 to N do x:=f(x);
  item:=x;
end;

function Period(xx:longint):longint; {vischislenie perioda}
var q:byte;
begin
  q:=0;
  x:=xo;
  i:=0;
  repeat
   If x=xx then inc(q);
   x:=f(x);
   if q>0 then inc(i);
  until q=2;
  period:=i;
end;

Begin
writeln('vvedite kol-vo elementov');
readln(N);
xo:=5;
a:=4149;
m:=131074;
c:=27700;

writeln('x[',N,']= ',item(n));
writeln('It period is: ',period(item(n)));
readln;
End.
Требуется вычислить такие значения коэффициентов m,c,a, при которых период ГСПЧ будет наибольшим. Вернее, вычисленые-то они уже имеются, но это взято из интернетов, где ни глянь - везде пишут нечто вроде "данные значения коэффициентов вычислены различными исследователям и являются наиболее приемлемыми для генерации максимального периода". А мне надо доказать, что именно эти значения, а не другие. Соответственно, надо вычислить множество значений, визуализировать (построить график). Как - описывается во втором томе у Кнута, но для меня это крайне сложно и запутано. Может кто-нибудь сможет объяснить более доступно? Буду очень признателен
17.06.2011 16:18
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #32

В районе дней двух читал статью на хабре о ГПСЧ. Попробуй поискать.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
17.06.2011 16:32
Find all posts by this user Quote this message in a reply
Tent Offline

Posts: 429
Post: #33

Эта?
Если да - в ней нет ничего, что мне могло бы помочь.
Quote:— c и m должны быть взаимно простыми,
   — a-1 должно быть кратно p для всех простых делителей p числа m,
   — если m кратно 4 (а в нашем случае оно будет кратно), то и a-1 должно быть кратно 4.
На основании этих свойств можно вычислить и c и a (при условии если m взять равной, например, (2^32)-1), но для этого нужно брать просто огромнейшее количество значений c и a, и смотреть как при этом будет меняться период
17.06.2011 17:30
Find all posts by this user Quote this message in a reply
gamecreator Offline

Posts: 7107
Post: #34

(17.06.2011 17:30)Tent Wrote:  при условии если m взять равной, например, (2^32)-1
Думаю, ты имел в виду просто 2^32


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
17.06.2011 20:30
Find all posts by this user Quote this message in a reply
izrukvruki Offline

Posts: 2133
Post: #35

есть папка C:\temp

каждый день в ней создается подпапка (иногда создаем 2-3 подпапки, например в понедельник за сб и вс), куда мы скидываем служебные файлы,
Code:
....
\4000
\4001
\4002
....
\4038
папки старше месяца удаляем

Как можно получить номер самой свежей (не по дате создания, а по номеру) подпапки?
в данной ситуации это будет число 4038

мне это надо для одной процедуры в VisualBasic - для ворда

спасибо


Сайт Кремля
(This post was last modified: 28.11.2011 13:27 by izrukvruki.)
28.11.2011 13:25
Visit this user's website Find all posts by this user Quote this message in a reply
izrukvruki Offline

Posts: 2133
Post: #36

Решение на другом форуме мне подсказал Shaidar Haran.
Code:
LastFolder = ""

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:\Temp")

For Each SubFolder In Folder.SubFolders
    If IsNumeric(SubFolder.Name) Then
        If (SubFolder.Name > LastFolder) Then LastFolder = SubFolder.Name
    End If
Next

MsgBox LastFolder


Сайт Кремля
28.11.2011 18:14
Visit this user's website Find all posts by this user Quote this message in a reply
Efrit Offline
Administrators

Posts: 6183
Post: #37

Изрук, тут вряд ли кто знает VB, увы... Я вот, с ним вообще не знаком.


Welcome to the soldier side,
Where there is no one here but me.
People all grow up to die,
There is no one here but me...
28.11.2011 19:28
Find all posts by this user Quote this message in a reply
gamecreator Offline

Posts: 7107
Post: #38

помогите выбрать структуру данных. суть такова:
сфера разделена на 8 равных треугольников (сферических). каждый тр-к рекурсивно (с заданной глубиной) разделен на 4 тр-ка. в процессе к 6 изначальным точкам добавляются новые точки на ребрах треугольника. таким образом точки являются общими для соседних треугольников. при этом в каждой точке есть параметр (случайное число), который не может быть получен отдельно для каждого треугольника при делении. в чем можно хранить эти параметры, чтобы можно было узнать параметры вершин произвольного треугольника?


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
26.09.2012 01:33
Find all posts by this user Quote this message in a reply
Efrit Offline
Administrators

Posts: 6183
Post: #39

gamecreator Wrote:сфера разделена на 8 равных треугольников (сферических)
Эта фраза сломала мне мозг.

Я совершенно не понял постановку задачи - но предполагаю, что тебе может помочь обычная агрегация через указатель ("родительский/дочерний")...


Welcome to the soldier side,
Where there is no one here but me.
People all grow up to die,
There is no one here but me...
26.09.2012 08:18
Find all posts by this user Quote this message in a reply
gamecreator Offline

Posts: 7107
Post: #40

(26.09.2012 08:18)Efrit Wrote:  Эта фраза сломала мне мозг.
ну представь октаэдр натянутый на сферу
(26.09.2012 08:18)Efrit Wrote:  предполагаю, что тебе может помочь обычная агрегация через указатель ("родительский/дочерний")...
сложно будет отслеживать общие вершины. думаю, должно быть что-то проще.


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
26.09.2012 13:03
Find all posts by this user Quote this message in a reply
GrayFace Offline
Forum Moderators

Posts: 1233
Post: #41

Лучше представь бутылку Клейна, натянутую на сферу с ручкой Sm http://www.clker.com/cliparts/1/5/3/6/12...vg.med.png - проведи здесь линию экватора.
Ну а кроме этого ничё понять невозможно.
[edit] Появились мысли: храни у каждого треугольника 3 соседей (по часовой стрелке, например) и 3 параметра вершин, ну и детей, родителя, если нужен. При разбиении смотри по каждой стороне, разбит ли сосед. Если разбит, то находи в его списке соседей себя и копируй соответствующий параметр. А именно, бери параметр у среднего подтреугольника. У него вершины должны быть упорядочены, как соседи у родителя.


Вся правда обо мне
01.10.2012 05:30
Find all posts by this user Quote this message in a reply
packa Offline

Posts: 1210
Post: #42

Есть кто шарит по scheme?


подпись была удалена администрацией
просьба не использовать картинки с сайта heroeslibrary.net, так как на них ругается Chrome
13.12.2012 23:06
Find all posts by this user Quote this message in a reply
gamecreator Offline

Posts: 7107
Post: #43

вроде от Common Lisp не очень отличается, может помогу.


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
14.12.2012 17:58
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group