Aller au contenu Aller au menu
  • Dépêches
  • Journaux
  • Liens
  • Forums
  • Rédaction
  • 🎙️ Projets Libres

LinuxFr.org

Se connecter

Proposer un contenu

  • Pas de compte ? S’inscrire...

Ne pas utiliser modulo

Retourner au contenu associé (journal : Hasard 0.8 : bibliothèque de génération des nombres aléatoires)

  • [^] # Ne pas utiliser modulo

    Posté par Victor STINNER (site web personnel) le 12 mai 2009 à 14:07. En réponse au journal Hasard 0.8 : bibliothèque de génération des nombres aléatoires. Évalué à 2.

    Est-ce que tu as plus d'explications ou un lien quelconque ?

    J'ai écrit ce document qui présente les erreurs courantes :
    http://haypo.hachoir.org/hasard?file/tip/doc/common_errors.r(...)

    Disons que l'intervalle de sortie du générateur soit [a; b] et celui que veut l'utilisateur est [x; y]. On peut utiliser le modulo à condition que :
    * [a; b] soit plus grand (ou de même taille) que [x; y] : (b-a+1) >= (y-x+1)
    * (b-a+1) soit multiple de (y-x+1)

    Exemple : générateur : [0; 99] (100 nombres), utilisateur : [0; 9]. Si le générateur est uniforme, rand() % 10 sera aussi uniforme.

    --

    Hasard réutilise l'idée de l'algorithme de GSL, mais tire plusieurs nombres si l'intervalle du générateur est plus petit que celui de l'utilisateur. L'algorithme général est :
    1. tirer un nombre au hasard
    2. diviser ce nombre par un facteur (pour limiter le nombre d'itérations)
    3. si le nombre est plus grand que ce que veut l'utilisateur, recommencer (retour en 1.)

    Voir lib/randint.c pour les détails :
    http://haypo.hachoir.org/hasard?file/tip/lib/randint.c

    --

    Autre document utile : présentations des implémentations de PRNG existantes, avec quelques bugs que j'ai noté :
    http://haypo.hachoir.org/hasard?file/tip/doc/real_world.rst

Revenir en haut de page

Derniers commentaires

  • Re: ouais
  • Re: ouais
  • Mon utilisation
  • Re: pourquoi personne n'avoue s'en servir ?
  • web direct
  • Re: Archive
  • Un titre incroyable
  • Re: Je comprends pas
  • Re: Je comprends pas
  • Re: pourquoi personne n'avoue s'en servir ?
  • Re: Je comprends pas
  • Re: Je comprends pas

Étiquettes (tags) populaires

  • intelligence_artificielle
  • le_monde_diplomatique
  • grands_modèles_de_langage
  • merdification
  • capitalisme
  • états-unis
  • logiciel_libre
  • datacenter
  • canicule
  • administration_française
  • réchauffement_climatique
  • bigtech

Sites amis

  • Agenda du Libre
  • April
  • Éditions D-BookeR
  • Éditions Diamond
  • Éditions Eyrolles
  • Éditions ENI
  • En Vente Libre
  • Framasoft
  • La Quadrature du Net
  • Lea-Linux
  • Open Source Initiative
  • Imprimerie Grafik Plus

À propos de LinuxFr.org

  • Mentions légales
  • Faire un don
  • L’équipe de LinuxFr.org
  • Informations sur le site
  • Aide / Foire aux questions
  • Suivi des suggestions et bogues
  • Wiki du site
  • Règles de modération
  • Statistiques
  • API pour le développement
  • Code source du site
  • Plan du site

AltStyle によって変換されたページ (->オリジナル) /