![]() |
|
Модераторы: bsa |
![]()
|
|
| Первокурсница |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 26.4.2008 Где: Оренбург Репутация: нет Всего: нет |
|
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
Что за регистр такой? В общем случае случайное число можно генерировать так: Rn = a + c mod Rn-1 где a и c - любые целочисленные константы и, если я не ошибаюсь, Вы получите все числа из последовательности 0..(a+c) в случайном порядке. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Похоже человеку нужен LFSR. Псевдослучайные числа с его помощью обычно получают в аппаратуре, в програмировании он обычно используется для подсчета CRC Вот функция, возвращающая псевдослучайный БИТ.
|
|||
|
||||
| Первокурсница |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 26.4.2008 Где: Оренбург Репутация: нет Всего: нет |
Спасибочки за код! Я действительно имела ввиду LFSR!
|
|||
|
||||
| xvr |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Вынести seed наружу и проинициализировать его случайным числом (например временем). seed не может быть нулем
1: static const int POLYNOM = 0xEDB88320; Полином для LFSR. Единичные биты соответствуют отводам в сдвиговом регистре, с которых берется обратная связь. В данной реализации используется разновидность LFSR в котором элементы 'исключающее или' вмонтированны в сам регистр. 5: bool rv=(seed&1)!=0; Проверяется младший бит сдвигового регистра на 1, результат проверки выводится в качестве результата и заводится на все элементы 'исключающее или' в сдвиговом регистре Попробую нарисовать регистр:
|
||||||
|
|||||||
| Первокурсница |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 26.4.2008 Где: Оренбург Репутация: нет Всего: нет |
Ясно, спасибо! А в 1-ой строчке вашего кода после присваивания стоит адрес чего-то, верно? А чего? И еще, может быть, за одно подскажите, как временем-то инициализировать? Какой функцией, какую библиотеку надо подключать?
|
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Это не адрес, это совершенный неприводимый полином над полем степени 2, выраженный в битовом виде (каждый бит числа соотвествует какой то степени двойки) В данном случае это X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0 (X^32 подразумевается и лежит за границей integer'а)
Это сообщение отредактировал(а) xvr - 4.5.2008, 14:28 |
||||
|
|||||
| Первокурсница |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 26.4.2008 Где: Оренбург Репутация: нет Всего: нет |
А откуда вы его взяли? Как можно получить еще другой какой-нибудь? Существуют ли какие-нибудь для этого алгоритмы???? Поясните, пожалуйста, этот врпрос меня очень заинтересовал!!! Заранее спасибо! |
|||
|
||||
| xvr |
|
||||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Взял из исходника CRC32:
Прикрепляю свою библиотеку, написанную по этой книжке (поддерживаются только полиномы степеней 61-64) Присоединённый файл ( Кол-во скачиваний: 5 )
poly.rar 1,81 Kb |
||||||||||
|
|||||||||||
| Первокурсница |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 26.4.2008 Где: Оренбург Репутация: нет Всего: нет |
Спасибо! Посмотрела вашу библиотеку. С первого взгляда, конечно, ничего не понятно.
Ну, английский у меня хромает (причем очень сильно и на обе ноги), а русской версии не нашла. Поэтому хочу спросить, вы не слышали про критерий Эйзенштейна? Он характеризует признаки неприводимого полинома, если не ошибаюсь. Если слышали, не могли бы пояснить доступней??? Заранее спасибо! |
||||
|
|||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Он знает все. |
|||
|
||||
| xvr |
|
||||||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Английский надо лечить
|
||||||||||||
|
|||||||||||||
| Первокурсница |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 26.4.2008 Где: Оренбург Репутация: нет Всего: нет |
ООООХХХХ! Этот English!!!! Пошла за словарем. Переведу - еще чё-нить спрошу! |
|||
|
||||
| Vandalko |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 7.5.2007 Репутация: нет Всего: нет |
Я смотрю вы рассматриваете разнесённый тип генереатора... Мне как раз оч. нужен пример для полинома x^10+x^3+1
Вот только в С++, я не просто новачок, а очень сильно новачок P.S. В конце должен получиться табличиный генератор псевдослучайных чисел, но как реализовать схему я без понятия... меня больше всего смущают строчки: seed>>=1; if (rv) seed^=POLYNOM; Это сообщение отредактировал(а) Vandalko - 22.9.2008, 21:03 |
|||
|
||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
|
||||
|
|||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |