Maison >développement back-end >Tutoriel Python >Comment générer des nombres aléatoires avec une distribution spécifique en Python ?

Comment générer des nombres aléatoires avec une distribution spécifique en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-10 17:28:02696parcourir

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

Génération de nombres aléatoires avec une distribution (numérique) spécifiée

Cet article aborde le défi de la génération de nombres aléatoires basés sur une distribution donnée. En particulier, l'accent est mis sur une distribution spécifique, comme indiqué dans l'entrée :

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

Modules existants pour la génération de nombres aléatoires basée sur la distribution

Il est possible de développer une solution personnalisée pour générer nombres aléatoires selon la distribution donnée. Cela implique de créer la fonction de densité cumulée et de sélectionner la valeur correspondante en fonction d'une valeur générée aléatoirement entre 0 et 1. Cependant, de nombreux modules existants peuvent simplifier cette tâche, éliminant le besoin de codage manuel.

scipy.stats. rv_discrete

L'un de ces modules est scipy.stats.rv_discrete, qui vous permet de spécifier des probabilités via son paramètre de valeurs. Pour générer des nombres aléatoires, vous pouvez appeler la méthode rvs() de l'objet de distribution.

numpy.random.choice()

Une autre option consiste à utiliser numpy.random.choice() fonction. Il accepte une liste de valeurs et attribue des probabilités à l'aide du paramètre de mot-clé p. Par exemple :

numpy.random.choice(numpy.arange(1, 7), p=[0.1, 0.05, 0.05, 0.2, 0.4, 0.2])

random.choices()

Pour Python 3.6 et supérieur, vous pouvez exploiter random.choices() à partir de la bibliothèque standard. Voici un exemple :

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

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