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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a cs.stackexchange
scroll top