"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi «Rand ()% 14» renvoie-t-il une valeur finie sur Apple MCG?

Pourquoi «Rand ()% 14» renvoie-t-il une valeur finie sur Apple MCG?

Publié le 2025-04-14
Parcourir:949

Why Does `rand() % 14` Return Limited Values on Apple\'s MCG?

rand ()% 14 Générateur Renvoie des valeurs limitées

Dans un programme récent, un développeur a rencontré un problème où l'expression Rand ()% 14 a constamment produit des valeurs cohérentes. Le problème réside dans la nature du générateur de nombres aléatoires utilisé par MCG d'Apple.

Comme l'explique Wikipedia, le multiplicateur de MCG de 16807 est divisible par 7. Cela signifie que le premier nombre aléatoire généré après Srand () n'aura qu'un bit d'entropie lorsqu'il est pris modulo 14, résultant de l'éventail limité de valeurs. Cette carence est attribuée au générateur de nombres aléatoires de faible qualité utilisé par Apple.

Une solution simple à ce problème est d'invoquer Rand () plusieurs fois après SRand () et de rejeter les résultats initiaux. Cela améliorera l'entropie des nombres générés et résoudra le problème de la sortie de valeur limitée.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3