Maison  >  Article  >  développement back-end  >  Analyse du module aléatoire en Python (avec exemples)

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

不言
不言avant
2018-11-23 16:57:363142parcourir
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函数来处理

Exemple :

import random

for i in range(20):
    print(random.randint(0,10),end=' ')

Résultat :

1 1 7 5 10 1 4 1 0 8 7 7 2 10 6 8 6 0 3 1

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函数处理

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倍整数的随机数

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

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]

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=' ')

Code :

mark 帅 [183, 138] 18 mark 18 mark 帅 帅 [183, 138]
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=' ')
Résultat d'exécution :

0.357486615834809 0.5928029747238529 0.37053940107869987 0.3802224543848519 0.9741990956161711
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=' ')
Résultat :

4 1 10 5 6 2 8 5 5 10 7 2 9 6 2 6 0 5 10 10
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=' ')#两次输出的结果一致
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
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]
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)
Résultat :

['mark', '帅哥', 18, [183, 138]]
['帅哥', 18, 'mark', [183, 138]]
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)
Résultat :

['mark', '帅哥', 18, [183, 138]]
['mark', [183, 138], '帅哥']
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()
Complexité temporelle : 0(1)

Exemple :

import random

for i in range(5):
    print(random.uniform(10,1))
Résultat :

2.8826090956524606
1.5211191352548408
3.2397454278562794
4.147879756524251
6.532545391009419

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer