Semplice generatore di permutazioni pseudo-casuali di sequenza breve di lunghezza variabile
Domanda
Il problema di fronte a me è scrivere una funzione (da zero) per permutare n elementi, dove n è un argomento. Ho deciso di abbatterlo per applicare l'algoritmo Shuffles di Knuth, quindi avevo bisogno di scrivere un generatore di numeri pseudorandom.
Quindi ora il mio compito è scrivere una funzione semplice F(seed,n)
Ciò mi aiuterà a generare indici per le permutazioni pseudorandom di N elementi. Tuttavia, la funzione deve essere estremamente semplice: il mio vincolo è che posso usare solo i seguenti operatori: +, -,*,/,%, in particolare, nessun accesso all'indirizzo, codifica binaria, selezione dei bit ecc. - solo aritmetica sui numeri . Va bene, sono andato per i generatori congruenti lineari e ho implementato un (a*x+c)%m
procedura.
Quando ho iniziato a testare F(seed,2)
È diventato immediatamente evidente che i risultati oscillano tra zero e uno con un periodo di due.
Il mio problema è: come posso adattarmi F
per evitare quel comportamento? Forse dovrei generare le permutazioni N in modo diverso?
In pratica, sono interessato solo a n = <32
Nessuna soluzione corretta