Analyse du module aléatoire en Python (avec exemples)

不言
Libérer: 2018-11-23 16:57:36
avant
3141 Les gens l'ont consulté
Le contenu de cet article concerne l'analyse du module aléatoire en Python (avec des exemples). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

random est un module permettant à Python de générer des nombres pseudo-aléatoires. La graine aléatoire est par défaut l'horloge système. Les méthodes du module sont analysées ci-dessous :

1. random.randint(start,stop)

Il s'agit d'une fonction qui génère des nombres aléatoires entiers. Le paramètre start représente la valeur minimale et le. le paramètre stop représente la valeur maximale. , les valeurs aux deux extrémités peuvent être obtenues ; la complexité temporelle de l'algorithme de fonction

est : O(1)

Code source principal :

return self.randrange(a,b+1) #调用randrange函数来处理
Copier après la connexion

Exemple :

import random

for i in range(20):
    print(random.randint(0,10),end=' ')
Copier après la connexion

Résultat :

1 1 7 5 10 1 4 1 0 8 7 7 2 10 6 8 6 0 3 1
Copier après la connexion

2 random.randrange(start,stop,step)

est également un. fonction entière aléatoire avec paramètres optionnels

  • Lorsqu'il n'y a qu'un seul paramètre, la plage aléatoire par défaut est de 0 au paramètre, fermée à l'avant et ouverte à la fin

  • Quand il y a deux paramètres, il représente les valeurs minimum et maximum, fermé à l'avant Ouvert plus tard

  • Lorsqu'il y a trois paramètres, il représente le minimum valeur, valeur maximale et taille de pas, fermer d'abord et ouvrir plus tard

complexité temporelle de l'algorithme de fonction :O(1)

Code source principal :

return istart+istep*self._randbelow(n) #调用randbelow函数处理
Copier après la connexion

Exemple :

import random

for i in range(10):
    print(random.randrange(10),end=' ') #产生0到10(不包括10)的随机数

print("")

for i in range(10):
    print(random.randrange(5,10),end=' ') #产生5到10(不包括10)的随机数

print("")

for i in range(10):
    print(random.randrange(5,100,5),end=' ') #产生5到100(不包括100)范围内的5倍整数的随机数
Copier après la connexion

Résultat :

1 1 2 4 4 3 4 6 1 4
6 6 5 7 8 9 6 6 6 5
30 50 20 40 75 85 25 65 80 95
Copier après la connexion

3. choix aléatoire (seq)

Une fonction de sélection aléatoire, seq est une fonction non vide. ensemble, et un élément est sélectionné au hasard pour la sortie dans l'ensemble. Il n'y a pas de limite sur le type de l'élément.

Code source principal :

i=self._randbelow(len(seq)) #由randbelow函数得到随机地下标
return seq[i]
Copier après la connexion

Responsabilité temporelle de l'algorithme de fonction : O(1)

Exemple :

import random

list3=["mark","帅",18,[183,138]]
for j in range(10):
    print(random.choice(list3),end=' ')
Copier après la connexion

Code :

mark 帅 [183, 138] 18 mark 18 mark 帅 帅 [183, 138]
Copier après la connexion
4. random.random()

Cette fonction forme n'importe quel nombre à virgule flottante de 0,0 à 1,0, fermé à gauche et ouvert à droite, sans paramètres.

Exemple :

import random

for j in range(5):
    print(random.random(),end=' ')
Copier après la connexion
Résultat d'exécution :

0.357486615834809 0.5928029747238529 0.37053940107869987 0.3802224543848519 0.9741990956161711
Copier après la connexion
5.random.send(n=None)

Une fonction qui peut correspondre. nombres aléatoires Une fonction pour initialiser le générateur, n représente une graine aléatoire ; lorsque n = Aucun, la graine aléatoire est l'heure du système, et lorsque n représente d'autres données, telles que int, str, etc., les données fournies sont utilisées comme la graine aléatoire et la séquence de nombres aléatoires générée est fixe.

Instance :

import random

random.seed("mark")
for j in range(20):#无论启动多少次程序,输出的序列不变
    print(random.randint(0,10),end=' ')
Copier après la connexion
Résultat :

4 1 10 5 6 2 8 5 5 10 7 2 9 6 2 6 0 5 10 10
Copier après la connexion
6. random.getstate() et random.setstate(state) :

getstate La fonction () est utilisée pour enregistrer l'état du générateur de nombres aléatoires et la fonction setstate(state) est utilisée pour restaurer le générateur au dernier état enregistré.

Instance :

import random

tuple1=random.getstate()#记录生成器的状态
for i in range(20):
    print(random.randint(0,10),end=' ')
print()
random.setstate(tuple1)#传入参数回复之间的状态
for i in range(20):
    print(random.randint(0,10),end=' ')#两次输出的结果一致
Copier après la connexion
Résultat :

5 7 9 9 10 10 2 3 7 1 1 6 1 7 1 1 7 4 2 2
5 7 9 9 10 10 2 3 7 1 1 6 1 7 1 1 7 4 2 2
Copier après la connexion
7. random.shuffle(seq,random=None) :

paire d'entrants La collection est mélangée. Il ne peut être utilisé que pour les séquences mutables, telles que les chaînes et les listes. Une erreur sera signalée pour les séquences immuables telles que les tuples utilisés pour sélectionner la méthode d'opération dans le désordre, telle que random=random.

Code source principal :

for i in reversed(range(1,len(x))):
    j=randbelow(i+1)
    x[i],x[j]=x[k],x[i]
Copier après la connexion
Complexité temporelle de l'algorithme de fonction : O(n)

Exemple :

import random

lists=['mark','帅哥',18,[183,138]]
print(lists)
random.shuffle(lists,random=None)
print(lists)
Copier après la connexion
Résultat :

['mark', '帅哥', 18, [183, 138]]
['帅哥', 18, 'mark', [183, 138]]
Copier après la connexion
8. random.sample(population,k):

Le paramètre de population est une séquence, telle qu'une liste, un tuple, un ensemble, une chaîne, etc.; l'ensemble Les éléments forment une nouvelle séquence sans changer la séquence d'origine.

Pire complexité temporelle : O(n*n)

Exemple :

import random

lists=['mark','帅哥',18,[183,138]]
lists2=random.sample(lists,3)
print(lists)
print(lists2)
Copier après la connexion
Résultat :

['mark', '帅哥', 18, [183, 138]]
['mark', [183, 138], '帅哥']
Copier après la connexion
9. uniforme aléatoire (. a,b)

Une fonction qui génère un nombre à virgule flottante entre les paramètres a et b. Si a>b, elle génère un nombre à virgule flottante entre b et a.

Code source principal :

return a+(b-a)*self.random()
Copier après la connexion
Complexité temporelle : 0(1)

Exemple :

import random

for i in range(5):
    print(random.uniform(10,1))
Copier après la connexion
Résultat :

2.8826090956524606
1.5211191352548408
3.2397454278562794
4.147879756524251
6.532545391009419
Copier après la connexion

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!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!