Question

Le problème devant moi est d'écrire une fonction (à partir de zéro) aux éléments permulés n, où n est un argument. J'ai décidé de le décomposer pour appliquer l'algorithme de Shuffles de Knuth, donc j'ai besoin d'écrire un générateur de nombres pseudorandom.

Alors maintenant ma tâche est d'écrire une fonction simple F(seed,n) Cela m'aidera à générer des indices pour les permutations pseudorandomiques de n éléments. Cependant, la fonction doit être extrêmement simple: ma contrainte est que je ne peux utiliser que les opérateurs suivants: +, -, *, /,%, spécifiquement, pas d'accès à l'adresse, de codage binaire, de sélection des bits, etc. - seulement arithmétique sur les nombres . C'est bien, je suis allé pour des générateurs congruents linéaires et j'ai implémenté un (a*x+c)%m procédure.

Alors que j'ai commencé à tester F(seed,2) Il est immédiatement allé évident que les résultats oscille entre zéro et un avec une période de deux.

Mon problème est: comment puis-je m'adapter F Pour éviter ce comportement? Peut-être que je devrais générer les permutations N d'une manière différente?

En pratique, je ne suis intéressé que par n = <32

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top