User Tag List

Страница 2 из 5 ПерваяПервая 12345 ПоследняяПоследняя
Показано с 11 по 20 из 51

Тема: Генератор псевдослучайных чисел

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    11.04.2006
    Адрес
    Novosibirsk
    Сообщений
    971
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    11
    Поблагодарили
    9 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от introspec Посмотреть сообщение
    Я прикинул сейчас в уме, разница в десяток тактов, не больше. Вообще, нужно будет найти список полиномов и выбрать такой, чтоб попроще кодился...
    Для сдвигового 16-битного регистра с обратной связью такой полином только один, который я и использовал. Можно конечно генератор перекодить, если с неочевидным битовым трюкачеством быстро суметь четность посчитать (под четностью понимается четное/нечетное количество единичных битов в слове). Я литературу проштудировал на этот счет, но мне показалось все-таки в лоб проще сделать, не хватает "аккумуляторов" на Z80 для того чтобы изящно сделать. На писюке четность с битовыми трюками считается быстро и изящно. Но там и классический генератор любой разрядности с делением закодить несложно, либо сопроцессор за вымя потрогать.

    Для 32 бит есть других полиномов, они собсно все в литературе описаны.
    Последний раз редактировалось ram_scan; 02.04.2014 в 18:00.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    25.03.2013
    Адрес
    г. Лондон, Великобритания
    Сообщений
    948
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ram_scan Посмотреть сообщение
    Для сдвигового 16-битного регистра с обратной связью такой полином только один, который я и использовал.
    Вот тут лежат коэффициенты всех 2048 возможных линейных сдвиговых генераторов с полным периодом: http://www.ece.cmu.edu/~koopman/lfsr/index.html

    Не все они могут оказаться "хорошими", потому что степень "замешивания" битов не проверяется. Тем не менее, наверняка, в этом списке найдутся достойные альтернативы вашему варианту.
    "introspec" читается как "интроспек". некоторые читают как "интроспец", но я никакой не спец. я спек.

  4. #3

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Переписанный генератор из ПЗУ бейсика
    Код:
    random
    	ld	de,0
    seed	equ	$-2
    	xor	a
    	ld	h,a,l,a,b,a
    	add	hl,de
    	adc	a,b
    	add	hl,hl
    	adc	a,a
    	add	hl,hl
    	adc	a,a
    	add	hl,hl
    	adc	a,a
    	add	hl,de
    	adc	a,b
    	add	hl,hl
    	adc	a,a
    	add	hl,hl
    	adc	a,a
    	add	hl,de
    	adc	a,b
    	add	hl,hl
    	adc	a,a
    	add	hl,de
    	adc	a,b
    	sub	#4a
    	neg
    	ld	c,a
    	add	hl,bc
    	ld	(seed),hl
    	ret
    формулу не помню, но генерит идеально
    С уважением,
    Jerri / Red Triangle.

  5. #4

    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    юзал другой, мне хватило..
    Код:
    random:
    R1:LD C,$15+3
    R2:LD A,#70
     ADD A,C:LD C,A
     LD (R1+1),A
    R3:LD A,#FD
     SUB C:LD C,A,(R2+1),A
     RRCA:LD (R3+1),A
     LD A,C

  6. #5

    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,830
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    247
    Поблагодарили
    106 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Программу (сурсы?) для тестов в студию.
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  7. #6

    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,830
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    247
    Поблагодарили
    106 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я не уверен, что ram_scan так проверяет. Вот и уточняю.
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  8. #7

    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    and %00000111
    плохой способ для LCG.

  9. #8

    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    RND-генератор с ОЧЕНЬ большим периодом:

    Код:
            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, а чтобы случайные числа
    получались  хорошими  сразу - лучше запол─
    нить таблицу каким-нибудь данными с более-
    менее   равномерным   распределением  всех
    байт.
    http://zxpress.ru/article.php?id=8675

  10. #9

    Регистрация
    11.01.2008
    Адрес
    Ладошкино
    Сообщений
    1,811
    Записей в дневнике
    4
    Спасибо Благодарностей отдано 
    386
    Спасибо Благодарностей получено 
    339
    Поблагодарили
    244 сообщений
    Mentioned
    14 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    http://www.worldofspectrum.org/forum...ad.php?t=39632
    и там же еще ссылка. У поляков тоже тема есть давно, и с примерами..
    Profi v3.2 -=- Speccy2010,r2

  11. #10

    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А если построить огибающий колокол?

Страница 2 из 5 ПерваяПервая 12345 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Расчет модуля разности чисел
    от Andrew771 в разделе Программирование
    Ответов: 15
    Последнее: 15.02.2013, 21:06
  2. Ответов: 16
    Последнее: 15.12.2011, 20:29
  3. Генератор RND
    от Destr в разделе Программирование
    Ответов: 4
    Последнее: 19.10.2009, 21:16
  4. генератор тора
    от voodoogod в разделе Программирование
    Ответов: 1
    Последнее: 10.03.2005, 20:19

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •