Maison  >  Article  >  développement back-end  >  Comment générer des nombres aléatoires avec une distribution personnalisée en Python ?

Comment générer des nombres aléatoires avec une distribution personnalisée en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-10 19:03:02514parcourir

How to Generate Random Numbers with a Custom Distribution in Python?

Génération de nombres aléatoires à l'aide d'une distribution spécifique

Vous possédez un fichier contenant des probabilités pour des valeurs distinctes :

1 0.1
2 0.05
3 0.05
4 0.2
5 0.4
6 0.2

Votre objectif est de générer des nombres aléatoires basés sur cette distribution. Vous recherchez un module existant capable de gérer cette tâche, reconnaissant qu'il s'agit d'un problème répandu qui a peut-être déjà incité au développement de fonctions ou de modules spécialisés.

Solution

L'écosystème Python propose plusieurs options pour générer des nombres aléatoires avec un distribution :

  1. scipy.stats.rv_discrete :

    • Fournissez vos probabilités dans le paramètre de valeurs.
    • Utilisez la méthode rvs() de l'objet de distribution pour générer des nombres.
  2. numpy.random.choice() avec le paramètre p :

    • Passez les probabilités comme mot-clé p paramètre.
    • Exemple :

      numpy.random.choice(numpy.arange(1, 7), p=[0.1, 0.05, 0.05, 0.2, 0.4, 0.2])
  3. random.choices() (Python 3.6 ):

    • Cette fonction de la bibliothèque standard permet de spécifier probabilités.
    • Exemple :

      import random
      random.choices(population=list(range(1, 7)), weights=[0.1, 0.05, 0.05, 0.2, 0.4, 0.2])

Ces modules fournissent des moyens efficaces et simples de générer des nombres aléatoires avec une distribution donnée, éliminant le besoin de mettre en œuvre des algorithmes personnalisés.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn