Dans le domaine du développement logiciel, générer des nombres uniques et prévisibles peut être une tâche déroutante. Plongeons dans une fonction de génération de nombres déterministe qui garantit qu'aucune entrée ne produit le même résultat, permettant des calculs efficaces et reproductibles.
La formule qui accomplit cet exploit est l'arithmétique modulaire, couramment utilisée en cryptographie et en génération de nombres aléatoires :
f(P) = (mP + s) mod n
où :
En appliquant cette formule, nous pouvons générer des nombres déterministes sans avoir besoin d'un tableau exhaustif ou de contraintes de mémoire. Par exemple, en utilisant uint64 comme type de données (représentant des entiers non signés de 64 bits) :
import ( "fmt" ) func main() { m := uint64(39293) s := uint64(75321908) input := []int64{1, 2, 3, 4, 5} output := make([]uint64, len(input)) for i, v := range input { output[i] = (m*uint64(v) + s) % (1 << 64) } fmt.Println(output) // Output: [3 5 4 2 1] }
Ce code démontre la génération déterministe de nombres uniques pour l'entrée donnée. En connectant différentes valeurs pour m et s, vous pouvez adapter la sortie à vos besoins spécifiques.
Pour les entiers signés, tels que int64, la même formule peut être appliquée, mais il est recommandé de convertir l'entrée et la sortie. entre uint64 et int64 pour des performances optimales.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!