Python Learning-----Articles de nombres aléatoires

Table des matières

 1. Nombres aléatoires

1. Entier aléatoire

(1) Contient les limites supérieure et inférieure (intervalle fermé)

(2) Y compris la limite inférieure, à l'exclusion de la limite supérieure (bas fermé et haut ouvert)

(3) Définissez la taille du pas (intervalle)

La différence entre randint et randrange

2. Nombres à virgule flottante aléatoires

(1) Nombres à virgule flottante entre 0 et 1

(2) Nombres à virgule flottante aléatoires [a,b]

2. Valeur aléatoire de la séquence ordonnée

1. Obtenir un seul résultat de données au hasard

 2. Obtenez plusieurs résultats de données au hasard

(1) Prenez un à la fois, prenez plusieurs fois (règle du tirage au sort, distribution binomiale)

 (2) Obtenez plusieurs à la fois (distribution discrète)

La différence entre les choix et les échantillons

3. Mélanger au hasard l'ordre de la séquence (il s'agit d'une séquence variable)

3. Graine de nombre aléatoire


 1. Nombres aléatoires

Bibliothèques à importer 

import random

1. Entier aléatoire

(1) Contient les limites supérieure et inférieure (intervalle fermé)

Obtenir un entier aléatoire [a,b] dont la limite inférieure est a et la limite supérieure est b

random.randint(a,b)

import random
#示例
a=random.randint(89,88)
print(a)

Remarque : la limite inférieure ne peut pas être supérieure à la limite supérieure, sinon une erreur sera signalée

(2) Y compris la limite inférieure, à l'exclusion de la limite supérieure (bas fermé et haut ouvert)

Obtenir un entier aléatoire [a,b) dont l'intervalle fermé inférieur est a et l'intervalle ouvert supérieur est b

random.randrange(a,b)

#示例
import random
a=random.randrange(12,55)
print(a)

(3) Définissez la taille du pas (intervalle)

Obtenir un entier aléatoire [a, b) avec l'intervalle fermé inférieur comme a et l'intervalle ouvert supérieur comme b, et la taille du pas est pas

random.randrange(a,b,step)

Par exemple : pour obtenir un nombre aléatoire entre 0 et 100, et la taille du pas est de 2, vous pouvez random.randrange(0,100,2), alors la sortie doit être 0,2,4,5,6,8,10, 12 ...... 98, notez que 100 n'est pas disponible, c'est un intervalle ouvert

#示例
import random
a=random.randrange(12,99,2)
print(a)

La différence entre randint et randrange

Les deux côtés de randint sont des intervalles fermés ; le côté gauche de randrange est un intervalle fermé et le côté droit est un intervalle ouvert

randint ne peut pas définir la taille du pas ; randrange peut définir la taille du pas

2. Nombres à virgule flottante aléatoires

(1) Nombres à virgule flottante entre 0 et 1

Obtenir un nombre à virgule flottante entre 0 et 1

random.random()

import random
a=random.random()
print(a)

(2) Nombres à virgule flottante aléatoires [a,b]

Obtenir un nombre à virgule flottante dont la limite inférieure est a et la limite supérieure est b (les deux sont des intervalles fermés)

aléatoire.uniforme(a, b)

 random.uniform(a, b) permet à la limite inférieure d'être supérieure à la limite supérieure, aucune erreur ne sera signalée et l'intervalle fermé est pris des deux côtés.

import random
a=random.uniform(12,33) #获取一个12~33之间的浮点数
a=random.uniform(33,12) #获取一个12~33之间的浮点数
print(a)

2. Valeur aléatoire de la séquence ordonnée

Bibliothèques à importer 

import random

1. Obtenir un seul résultat de données au hasard

Dans une séquence ordonnée, obtenez l'une des données individuelles (les séquences ordonnées incluent des chaînes, des listes, des tuples, etc.)

random.choice (séquence ordonnée), par exemple : random.choice([1,'wad',5,8])

Le type de données obtenu est défini en fonction du type réel de données, par exemple : si 8 est obtenu, alors il s'agit de type int ; si 'wad' est obtenu, alors il s'agit de type str

import random
print(random.choice('abcdef'))   #字符串
print(random.choice((12,'kk','蔡徐坤','只因')))  #元组
print(random.choice(['李白','韩信','孙悟空','百里玄策'])) #列表
print(random.choice([1,'wad',5,8]))  #列表

Résultat de sortie :

 2. Obtenez plusieurs résultats de données au hasard

(1) Prenez un à la fois, prenez plusieurs fois (règle du tirage au sort, distribution binomiale)

Obtenez plusieurs données dans une séquence ordonnée et prenez l'une des données à chaque fois, obtenez random.choices(li,weights,k) plusieurs fois

Remarque : où li est le nom de la séquence ordonnée, weights est la probabilité (s'il n'est pas défini, la probabilité que chaque donnée soit récupérée est la même par défaut) et k est le nombre d'acquisitions

Toutes les données obtenues par cette fonction sont placées dans une collection, qui sont toutes des types de liste (à l'exception des tuples), et les résultats des données peuvent être répétés et égaux

Exemple 1:

Si les valeurs de poids et k ne sont pas définies lors de l'utilisation de random.choices, une donnée est obtenue par défaut et la probabilité que chaque donnée soit obtenue est égale

import random
li=[False,77,'蔡徐坤',3.1415,'IKUN']
print(random.choices(li))
print(type(random.choices(li)))

 Exemple 2 :

Si la valeur des temps d'acquisition k est définie, mais que la valeur des poids n'est pas définie, alors une donnée est acquise à chaque fois, le nombre de fois est k et la probabilité que chaque donnée soit acquise est égale (le tirage au sort règle) 

import random
li=[False,77,'蔡徐坤',3.1415,'IKUN']
print(random.choices(li,k=2))
print(type(random.choices(li,k=2)))

 Exemple 3 :

Les pondérations de valeur de la probabilité d'acquisition de données personnalisées et la valeur du nombre de fois d'acquisition

import random
li=[False,77,'蔡徐坤',3.1415,'IKUN']
#这里定义这5个数据被获取的概率是8:1:2:3:2 ,获取次数为3
print(random.choices(li,weights=[8,1,2,3,2],k=3))

 Exemple 4 :

Même si li est une chaîne (str), le résultat obtenu est toujours un type liste ; mais s'il s'agit d'un type tuple, alors le résultat obtenu est un type tuple (tuple)

import random
li='12345'
gg=(520,'蔡徐坤',3.3,True,888)
print(type(gg))
print(random.choices(li,weights=[8,1,2,3,2],k=2))
print(type(random.choices(li,weights=[8,1,2,3,2],k=2)))

 (2) Obtenez plusieurs à la fois (distribution discrète)

Obtenir plusieurs données dans une séquence ordonnée à la fois

random.sample(li,k)

Remarque : où li est le nom de la liste, k est le nombre d'acquisitions

Il n'y a pas de duplication de toutes les données obtenues par cette fonction. Elle obtient directement k données (distribution discrète) à la fois. Bien sûr, les types de résultats sont aussi des types de liste.

import random
tupl=('1123',55,3.14,'好兆头')
li=[520,'蔡徐坤',3.3,True,888]
a=random.sample(li,k=3) #一次性获取3个数据
b=random.sample(tupl,k=2)
print(a,type(a))
print(b,type(b))

Ici, nous pouvons voir qu'en utilisant l'échantillon pour obtenir de manière aléatoire les données de la liste ou du tuple, les types de résultats sont tous des types de liste 

 Remarque : Cette fonction en sélectionne plusieurs à la fois. Le format de données dans la séquence doit donc être supérieur au nombre de sélections, sinon une erreur sera signalée.

La différence entre les choix et les échantillons

1. Les choix consistent à sélectionner au hasard une donnée à chaque fois, vous pouvez choisir plusieurs fois et les données peuvent être répétées ; tandis que l'échantillon consiste à sélectionner plusieurs données à la fois et les données ne peuvent pas être répétées.

2. les choix peuvent définir la probabilité que les données soient sélectionnées, mais l'échantillon n'est pas autorisé

3. Le nombre de choix de données peut être inférieur au nombre de choix, tandis que le format de données de l'échantillon ne peut pas être inférieur au nombre de choix

4.choices obtient au hasard des données de tuple, et le type de données de résultat est toujours de type tuple (tuple), tandis que les résultats obtenus par échantillon sont tous de type liste (liste)

3. Mélanger au hasard l'ordre de la séquence (il s'agit d'une séquence variable)

Connu une liste, je veux mélanger l'ordre de la liste, puis re-sortir le résultat

Random.shuffle (nom de la liste)
note : la séquence à mélanger doit être variable, comme une liste, s'il s'agit d'un tuple, une erreur sera signalée, car les tuples ne peuvent pas être modifiés

 Cette fonction renvoie directement la liste qui a été mélangée, puis écrase la liste d'origine, nous produisons donc directement le nom de la liste d'origine

 Exemple:

import random
li=['中国','美国','英国','日本','法国','俄罗斯']
random.shuffle(li)
print(li)

3. Graine de nombre aléatoire

 Bibliothèques à importer 

import random

Nous avons été exposés à des graines de nombres aléatoires lorsque nous apprenions le langage C auparavant. Cette graine génère des nombres aléatoires qui lui correspondent en fonction de l'heure à ce moment. Parce que le temps avance toujours, chaque fois que le nombre aléatoire est généré Les nombres sont différents , et il y a des graines de nombres aléatoires en Python, mais contrairement au langage C, les nombres aléatoires générés en Python à chaque fois changent avec le temps, et différents nombres aléatoires sont générés, donc la graine aléatoire de Python est différente de celle du langage C. Il s'agit en fait d'une fonction déterminée par le temps. Une graine de nombre aléatoire est configurée pour s'assurer que les nombres aléatoires générés à chaque fois sont connaissables.

random.seed (nombre de fois)

Différents numéros de temps généreront différents nombres aléatoires, mais s'il s'agit du même numéro de temps, les données générées seront les mêmes

 Exemple:
 

import random
random.seed(12)
li=('哈哈',56,3.221,False,'250')
a=random.choice(li)
print(a,type(a))

 

 En fait, le résultat de chaque sortie est le même. Si nous changeons le numéro de temps de la graine du nombre aléatoire en quelque chose d'autre, les données aléatoires générées seront différentes.

 

Amis, l'avez-vous appris? N'est-ce pas très intéressant !

Envoyer un fond d'écran à tout le monde 

Guess you like

Origin blog.csdn.net/m0_73633088/article/details/128887170