Generator sekwencji klocków.

1

Hey!

Jak zapewne mała część wie, napisałem klona gry Tetris.

Pseudo generator liczb losowych PRNG działa znośnie :)

@furious_programming: pochwal się swoim pomysłem na generator, mam nadzieję, że będzie łatwy do implementacji w języku asemblera.

	; pobierz pseudo losową wartość
	mov	eax,	dword [taris_seed]
	macro_library	LIBRARY_STRUCTURE_ENTRY.xorshift32

;===============================================================================
; Copyright (C) Andrzej Adamczyk (at https://blackdev.org/). All rights reserved.
; GPL-3.0 License
;===============================================================================

;===============================================================================
; wejście:
;	rax - ziarno
; wyjście:
;	rax - wartość "losowa"
library_xorshift32:
	; zachowaj oryginalne rejestry
	push	rdx

	; https://en.wikipedia.org/wiki/Xorshift
	mov	edx,	eax
	shl	eax,	13
	xor	eax,	edx
	mov	edx,	eax
	shr	eax,	17
	xor	eax,	edx
	mov	edx,	eax
	shl	eax,	5
	xor	eax,	edx

	; przywróć oryginalne rejestry
	pop	rdx

	; powrót z procedury
	ret

0

Stosunkowo niedawno potrzebowałem generator, który musiał być prosty, wydajny, dawać możliwość powtórzenia lub powtórnego generowania od miejsca innego niż początek (sprowadza się to do utrzymania stanu). Zrealizowałem coś takiego w tym projekcie: https://github.com/andrzejlisek/BackupToMail , opisane jako "Linear congruential generator" i "Fibonacci generator", wzory są proste, opisane w pliku Readme.md w rozdziale "dummy file" (głównym przeznaczeniem tych generatorów jest udawanie dużego pliku binarnego do celów testowych), wymagają kilku liczb (czyli możesz zrobić krótki bufor cykliczny w pamięci). W rozdziale "Create disk file" masz opis, jak zrobić plik używając danego generatora. Jednak jakość generowania silnie zależy od parametrów, myślę, że da się zaimplementować w asm na liczbach 16-bitowych.

Ten program oprócz umieszczania danych w skrzynkach mailowych ma funkcję generowania pliku z losowymi bajtami i wyświetlania długości okresu, więc możesz popróbować te dwa generatory z różnymi parametrami.

Te generatory to nic innego, jak:
https://pl.wikipedia.org/wiki/Generator_Fibonacciego
https://pl.wikipedia.org/wiki/Generator_liczb_pseudolosowych - "Proste generatory"

1 użytkowników online, w tym zalogowanych: 0, gości: 1