Есть ли какая-либо конкретная программа в коде сборки оружия, которая приближается к генерации 32-битных двоичных случайных чисел? Мне нужно 1000 тестовых случаев для программы.Есть ли какая-либо конкретная программа в коде сборки оружия, которая приближается к генерации 32-битных двоичных случайных чисел?
-1
A
ответ
1
В этой связи представляет собой 32-битный код ARM для (генератора xorshift) ПГСЧ: http://hackipedia.org/Platform/3D0/html,%203DO%20SDK%20Documentation/Type%20A/tktfldr/acbfldr/2acbh.html
Основной алгоритм newbit: = bit33 ПНП bit20, сдвиг влево 33 битное число и положить в newbit внизу; эта операция выполняется для всех необходимых новых битов (т. е. 32 бита). Вся операция может быть закодирована компактно путем максимального использование сдвигового вытянутой руки:
; enter with seed in R0 (32 bits), R1 (1 bit in least significant bit)
; R2 is used as a temporary register.
; on exit the new seed is in R0 and R1 as before
; Note that a seed of 0 will always produce a new seed of 0.
; All other values produce a maximal length sequence.
;
TST R1, R1, LSR #1 ; top bit into Carry
MOVS R2, R0, RRX ; 33 bit rotate right
ADC R1, R1, R1 ; carry into lsb of R1
EOR R2, R2, R0, LSL #12 ; (involved!)
EOR R0, R2, R2, LSR #20 ; (similarly involved!)
+0
Спасибо, Ральф. Ценю вашу помощь! –
Вы должны отредактировали свой старый вопрос, чтобы сделать его менее широк. Это по-прежнему слишком велико, и ответ, вероятно, по-прежнему «такой же, как выход компилятора для нормальной функции rand()». Вы ничего не сказали о производительности или требованиях к качеству. Зачем вам это нужно в asm? Есть ли ограничение по размеру кода? (ответ там, а не на этот вопрос) –
Мне нужно 1000 случайных 32-битных чисел в двух наборах, чтобы я мог реализовать алгоритм перехода от одного числа к другому. –
Комментарий не отвечает ни на один из вопросов, отправленных @PeterCordes. И что значит «приближается»? Если вы выслеживаете (*, например, Google или Википедию) типичный генератор случайных чисел, он «приблизится». Возможно, вам придется немного поработать, чтобы преобразовать его в сборку ARM, если это то, что вам действительно нужно. – lurker