реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Генератор псевдослучайных чисел
Макс_Мат
сообщение Apr 5 2007, 14:50
Сообщение #31


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 21-03-07
Пользователь №: 26 378



Удивительно как вы неуклонно не хотите думать. Ведь все же уже разжевано до безобразия! Поймите, что именно мышление ведет к прогрессу и нельзя этой функции, данной нам свыше, допускать атрофироваться. Решение задачи можно сравнить с написанием картины - один, два штрижка и она превращается в шедевр. Но художник, опирается на внутренее чувство окружающего мира, а мы - на мышление(!).

Посмотрите этот алгоритм, и посчитайте количество операций, и если оно превысит, то смело бросьте в меня камень.

R=[];
s=0;
delLine = zeros(12,1);
mas=zeros(1,256);
for i=1:10000,
a = randint(1,1,256)+1;
v = a - 128;
s = s + v - delLine(end);
delLine = [v; delLine(1:end-1)];
g = mas(a);
mas(a) = s;
R=[R;g];
end;

ps меня удивило, что Вы, Олдрин, непонаслышке знакомы с синклером, думаю с радио-86рк тоже. Чувствуется старая закалка, не то, что нынешние студенты, которые живут с ожиданием, что все за них сделают...С Вами приятно общаться, но все же, настоятельно рекомендую вникать глубже в суть задач...есть у Вас такой небольшой порочек...
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 5 2007, 15:10
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Макс_Мат @ Apr 5 2007, 15:50) *
Удивительно как вы неуклонно не хотите думать. Ведь все же уже разжевано до безобразия! Поймите, что именно мышление ведет к прогрессу и нельзя этой функции, данной нам свыше, допускать атрофироваться. Решение задачи можно сравнить с написанием картины - один, два штрижка и она превращается в шедевр. Но художник, опирается на внутренее чувство окружающего мира, а мы - на мышление(!).

Посмотрите этот алгоритм, и посчитайте количество операций, и если оно превысит, то смело бросьте в меня камень.

R=[];
s=0;
delLine = zeros(12,1);
mas=zeros(1,256);
for i=1:10000,
a = randint(1,1,256)+1;
v = a - 128;
s = s + v - delLine(end);
delLine = [v; delLine(1:end-1)];
g = mas(a);
mas(a) = s;
R=[R;g];
end;

ps меня удивило, что Вы, Олдрин, непонаслышке знакомы с синклером, думаю с радио-86рк тоже. Чувствуется старая закалка, не то, что нынешние студенты, которые живут с ожиданием, что все за них сделают...С Вами приятно общаться, но все же, настоятельно рекомендую вникать глубже в суть задач...есть у Вас такой небольшой порочек...


Постепенно переходим к криптографии?

Мышление не заменяет образование. Кнута Вы ведь так и не прочитали?

Да, Вы избавились от сильной связи между соседними отсчетами. С третьей попытки. Все равно, без тщательного анализа нельзя утверждать, что Ваш доморощенный алгоритм генерирует достаточно хорошие случайные числа. Критериев их качества ведь до фига. К сожалению, незнание недостатков обычно не устраняет сами недостатки.

P.S. РКшки у меня не было. Журналы Радио читал. Но тогда оставалось только завидовать друзьям. С Синклерами, действительно, знаком не понаслышке. Хорошая была школа.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Макс_Мат
сообщение Apr 5 2007, 15:16
Сообщение #33


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 21-03-07
Пользователь №: 26 378



Это не доморощенный алгоритм. Он подробно исследован и запатентован. Я собственно оттуда и узнал о нем. Автора не помню. Кстати, кто-то из соотечественников, Чикин, кажется...

Сообщение отредактировал Макс_Мат - Apr 5 2007, 15:26
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 5 2007, 15:41
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Макс_Мат @ Apr 5 2007, 16:16) *
Это не доморощенный алгоритм. Он подробно исследован и запатентован. Я собственно оттуда и узнал о нем. Автора не помню. Кстати, кто-то из соотечественников, Чикин, кажется...


Если алгоритм опубликован и подробно исследован рядом компетентных в вопросе исследователей - это, конечно, совершенно другое дело. Тогда ему можно до некоторой степени доверять. Конечно, после обнаружения первоисточника и проверки корректности реализации. Мелочи могут быть критичными.

Ну так ведь первые две Ваши реализации ведь были имменно доморощенными?

P.S. Помню, некоторое время назад прочитал сообщение, что в каких-то вычислениях по методу Монте-Карло было обнаружено систематическое смещение, потому что использовался недостаточно хороший генератор случайных чисел. И так бывает.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Макс_Мат
сообщение Apr 5 2007, 15:57
Сообщение #35


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 21-03-07
Пользователь №: 26 378



Согласен. Я сам столкнулся с необходимостью реализации быстрых алгоритмов генерации и наткнулся на этот алгоритм. По мере тестов (именно практических на сигналыче) получали различные модификации.

ps Кстати, Вы не смотрели матлабовский генератор? Уж слишком подозрительно граммотно он сделан. А алгоритмиками матлабовцы не хотят делиться, или я плохо искал... Что думаете?
Go to the top of the page
 
+Quote Post
Oldring
сообщение Apr 5 2007, 16:08
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Макс_Мат @ Apr 5 2007, 16:57) *
ps Кстати, Вы не смотрели матлабовский генератор? Уж слишком подозрительно граммотно он сделан. А алгоритмиками матлабовцы не хотят делиться, или я плохо искал... Что думаете?


Нет, не смотрел. Вопрос в общем-то детально меня не особо интересовал. Работает - и ладно, особо важные исследования с ним я не проводил.

Это поможет?

Цитата
% References
%
% [1] C.B. Moler (2004) Numerical Computing with MATLAB, SIAM, 336pp.
% Available on-line at http://www.mathworks.com/moler.
%
% [2] G. Marsaglia and W.W. Tsang (2000) "The Ziggurat Method for Generating
% Random Variables", Journal of Statistical Software, 5(8). Available on-line
% at http://www.jstatsoft.org/v05/i08/.
%
% [3] G. Marsaglia and W.W. Tsang (1984) "A Fast, Easily Implemented Method
% for Sampling from Decreasing or Symmetric Unimodal Density Functions",
% SIAM Journal of Scientific and Statistical Computing, 5(2):349-359.
%
% [4] Knuth,D.E. (1998) Seminumerical Algorithms, volume 2 of The Art of
% Computer Programming, 3rd ed., Addison-Wesley.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Макс_Мат
сообщение Apr 5 2007, 16:19
Сообщение #37


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 21-03-07
Пользователь №: 26 378



спасибо, посмотрим на досуге...
Go to the top of the page
 
+Quote Post
Pathfinder
сообщение Apr 7 2007, 23:12
Сообщение #38


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 29-06-05
Пользователь №: 6 400



Макс_Мат, вы так и не ответили, каким образом предлагаемые вами методы реализуются за 4 такта на блекфине


--------------------
ADC / DAC LC Filter Designer — Удобный инструмент проектирования LC-фильтров для ЦАП и АЦП
Go to the top of the page
 
+Quote Post
Макс_Мат
сообщение Apr 9 2007, 10:09
Сообщение #39


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 21-03-07
Пользователь №: 26 378



А нужно ли это лично Вам? Если Вы до сих пор не видите как и не хотите учиться, то может Вам вообще покинуть сферу деятельности, связанную с электроникой и, в частности, с сигнальными процессорами?

ps обучают программированию на специальных курсах или в соседних разделах на форуме...
Go to the top of the page
 
+Quote Post
Pathfinder
сообщение Apr 9 2007, 12:12
Сообщение #40


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 29-06-05
Пользователь №: 6 400



Хмм, ничего другого и не ожидал - нечем ответить по всей видимости...
Или осознание собственного величия не позволяет снисходить до простых смертных...


--------------------
ADC / DAC LC Filter Designer — Удобный инструмент проектирования LC-фильтров для ЦАП и АЦП
Go to the top of the page
 
+Quote Post
Макс_Мат
сообщение Apr 9 2007, 12:59
Сообщение #41


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 21-03-07
Пользователь №: 26 378



я одно время работал с очень талантливым человеком. И вот, частенько, он любил повторять, когда мы принимали на работу очередного студента: "если человек к 18 годам не стал профессиональным инженером, то он им не станет никогда".

Сообщение отредактировал Макс_Мат - Apr 9 2007, 12:59
Go to the top of the page
 
+Quote Post
makc
сообщение Apr 9 2007, 14:19
Сообщение #42


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Уважаемые участники, для bb-offtopic.gif есть отдельный раздел. Не отходите от темы!


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
CD_Eater
сообщение May 1 2007, 22:50
Сообщение #43


Частый гость
**

Группа: Новичок
Сообщений: 173
Регистрация: 3-09-04
Из: Moscow
Пользователь №: 595



Для автора, думаю, через полгода запоздалый ответ вряд ли будет полезен, но "для копилки" хочу привести ещё один генератор ПСП, до безобразия простой, легко настраиваемый на любую длину чисел и на любую длину неповторяющегося куска.

X_next = 5*(1 + X_prev)
Вычисления производятся по модулю 2 в степени k (k - любое целое число от 3 до бесконечности).
Этот генератор обладает ПОЛНЫМ периодом (то есть, цикл проходит через все k-битные числа, прежде чем возникнет повтор).
А главное - простота реализации на любом МК. Это проще, чем вычислять регистр с линейной обратной связью, особенно если в МК есть умножение.

Примеры:
Чтобы получить посл-сть 9-битных чисел с периодом 512, применяем вышенаписанную формулу при k=9
Чтобы получить посл-сть 9-битных чисел с периодом 2^24, то применяем вышенаписанную формулу при k=24 и берём СТАРШИЕ 9 бит от получающихся чисел.

Если кто-то усмотрит в этом генераторе некую автокорреляцию, ухудшающую свойства случайности, то есть такой выход (при наличии в МК быстрого умножения)
X_next = A * X_prev + B
где коэффициенты A и B - любые целые числа, такие что A даёт остаток 1 при делении на 4, а B - любое нечётное. Эти требования на A и B гарантируют полноту периода, то есть, все k-битные числа будут собраны в один цикл (при любом k).
Автокорреляция, имхо, может быть улучшена, если взять большие числа A и B (вариант A=B=5 в этом плане хуже, но зато он предпочтительнее для тех, кому придётся умножать сдвигами и сложениями)

Конечно, для криптографических целей этот генератор не подходит.
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 17:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01476 секунд с 7
ELECTRONIX ©2004-2016