Программу (сурсы?) для тестов в студию.
Программу (сурсы?) для тестов в студию.
Свирепый агрессивно-депрессивный мордовец!
Не уверен - не напрягай!
Не сдавайся. Дыши?
Virtual TR-DOS
Я тоже так проверяю)))
Делал когда-то свой генератор случайных чисел на Амиге (для эмулятора Денди, шумового канала), и тоже так на экране его проверял. Менял алгоритм, пока распределение на экране не стало выглядеть случайным. Вот этот амижный код в Сишном эквиваленте:
Код:UINT8 FastRND(void) { static UINT16 D2 = 42286, D1 = 65535, A1 = 30609, D3; D3 = D1 + A1; A1 = D1 ^ 0xFFFF; D1 = (D2 >> 5) | (D2 << 11); D2 = D2 + D3; return D2; }
Я не уверен, что ram_scan так проверяет. Вот и уточняю.
Свирепый агрессивно-депрессивный мордовец!
Не уверен - не напрягай!
Не сдавайся. Дыши?
Virtual TR-DOS
"introspec" читается как "интроспек". некоторые читают как "интроспец", но я никакой не спец. я спек.
RND-генератор с ОЧЕНЬ большим периодом:
http://zxpress.ru/article.php?id=8675Код:II. Основанный на LFSR генератор случайных байт Как написано в умных книжках [4], один из таких генераторов придуман Mitchell'ом и Moore'ом и имеет вид: X[n] = ( X[n-24] + X[n-55] ) mod m Если m=2^k, то период такого генератора (2^55-1)·2^(k-1), что для случая байтов составит 2^(55-1)·2^7 ў 2^62 ў 4.6·10^18. Можно заметить, что для младшего бита такой генератор представляет собой LFSR- генератор (в данном случае N=55, K=24 ). Можно было бы вместо сложения использовать операцию XOR, в этом случае мы имели бы 8 55-битовых LFSR, генерирующих различные фазы последовательности длиной 2^55-1 бит и комбинируемые в 1 байт. Вместо LFSR с параметрами N=55, K=24 можно использовать любой другой с последовательностью макси─ мальной длины. Реализация на Z80 (с таблицей 256 байт): DO_RND ;OUT: A или B или C - случайный байт LD H,'PRT_RND ; 256-байтовая ;таблица CURND LD A,0 INC A LD (CURND+1),A ; не случайный ;номер, а лишь ;указатель в таблице LD L,A LD B,(HL) ADD A,55-24 LD L,A LD C,(HL) ADD A,24 LD L,A LD A,B ADD A,C LD (HL),A ;в регистрах A, B и С находятся случайные ;величины, отстоящие друг от друга на ;несколько десятков отсчётов RET Перед использованием такого генератора следует записать хотя бы 1 ненулевой байт в таблицу PRT_RND, а чтобы случайные числа получались хорошими сразу - лучше запол─ нить таблицу каким-нибудь данными с более- менее равномерным распределением всех байт.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Для сдвигового 16-битного регистра с обратной связью такой полином только один, который я и использовал. Можно конечно генератор перекодить, если с неочевидным битовым трюкачеством быстро суметь четность посчитать (под четностью понимается четное/нечетное количество единичных битов в слове). Я литературу проштудировал на этот счет, но мне показалось все-таки в лоб проще сделать, не хватает "аккумуляторов" на Z80 для того чтобы изящно сделать. На писюке четность с битовыми трюками считается быстро и изящно. Но там и классический генератор любой разрядности с делением закодить несложно, либо сопроцессор за вымя потрогать.
Для 32 бит есть других полиномов, они собсно все в литературе описаны.
Последний раз редактировалось ram_scan; 02.04.2014 в 18:00.
http://www.worldofspectrum.org/forum...ad.php?t=39632
и там же еще ссылка. У поляков тоже тема есть давно, и с примерами..
Profi v3.2 -=- Speccy2010,r2
Вот тут лежат коэффициенты всех 2048 возможных линейных сдвиговых генераторов с полным периодом: http://www.ece.cmu.edu/~koopman/lfsr/index.html
Не все они могут оказаться "хорошими", потому что степень "замешивания" битов не проверяется. Тем не менее, наверняка, в этом списке найдутся достойные альтернативы вашему варианту.
"introspec" читается как "интроспек". некоторые читают как "интроспец", но я никакой не спец. я спек.
А если построить огибающий колокол?
![]()
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)