Tent
Posts: 429
|
Кто-нибудь когда-нибудь сталкивался с линейным конгруэнтным методом генерации псевдослучайных чисел?
Есть задача, реализованная на паскале:
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 |
|
Berserker
Posts: 16657
|
|
17.06.2011 16:32 |
|
Tent
Posts: 429
|
Эта?
Если да - в ней нет ничего, что мне могло бы помочь.
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 |
|
gamecreator
Posts: 7107
|
|
17.06.2011 20:30 |
|
izrukvruki
Posts: 2133
|
есть папка 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 |
|
izrukvruki
Posts: 2133
|
Решение на другом форуме мне подсказал 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 |
|
Efrit
Posts: 6183
|
Изрук, тут вряд ли кто знает 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 |
|
gamecreator
Posts: 7107
|
помогите выбрать структуру данных. суть такова:
сфера разделена на 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 |
|
Efrit
Posts: 6183
|
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 |
|
gamecreator
Posts: 7107
|
|
26.09.2012 13:03 |
|
GrayFace
Posts: 1233
|
Лучше представь бутылку Клейна, натянутую на сферу с ручкой http://www.clker.com/cliparts/1/5/3/6/12...vg.med.png - проведи здесь линию экватора.
Ну а кроме этого ничё понять невозможно.
[edit] Появились мысли: храни у каждого треугольника 3 соседей (по часовой стрелке, например) и 3 параметра вершин, ну и детей, родителя, если нужен. При разбиении смотри по каждой стороне, разбит ли сосед. Если разбит, то находи в его списке соседей себя и копируй соответствующий параметр. А именно, бери параметр у среднего подтреугольника. У него вершины должны быть упорядочены, как соседи у родителя.
Вся правда обо мне
|
|
01.10.2012 05:30 |
|
packa
Posts: 1210
|
Есть кто шарит по scheme?
подпись была удалена администрацией
просьба не использовать картинки с сайта heroeslibrary.net, так как на них ругается Chrome
|
|
13.12.2012 23:06 |
|
gamecreator
Posts: 7107
|
|
14.12.2012 17:58 |
|