Heim  >  Artikel  >  Backend-Entwicklung  >  Analyse des Zufallsmoduls in Python (mit Beispielen)

Analyse des Zufallsmoduls in Python (mit Beispielen)

不言
不言nach vorne
2018-11-23 16:57:363188Durchsuche
Der Inhalt dieses Artikels befasst sich mit der Analyse des Zufallsmoduls in Python (mit Beispielen). Ich hoffe, dass er für Freunde hilfreich ist.

Random ist ein Modul für Python zum Generieren von Pseudozufallszahlen. Der Zufallsstartwert ist standardmäßig die Systemuhr. Die Methoden im Modul werden unten analysiert:

1. random.randint(start,stop)

Dies ist eine Funktion, die ganzzahlige Zufallszahlen generiert Der Parameter Stop stellt den Maximalwert dar. Die Zeitkomplexität des

-Funktionsalgorithmus beträgt: O(1)

Kernquellcode:

return self.randrange(a,b+1) #调用randrange函数来处理

Beispiel:

import random

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

Ergebnis:

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)

ist ebenfalls eine zufällige Ganzzahlfunktion mit optionalen Parametern

  • Nur ​​wenn ein Parameter vorhanden ist, reicht der standardmäßige Zufallsbereich von 0 bis zu diesem Parameter. Er wird zuerst geschlossen und dann geöffnet, wenn zwei Parameter vorhanden sind. Zuerst geschlossen und später geöffnet 🎜>

  • Mit drei Parametern stellt es den Minimalwert, den Maximalwert und die Schrittgröße dar, zuerst geschlossen und später geöffnet
  • Zeitliche Komplexität der Funktion Algorithmus: O(1)
  • Kernquellcode:

    return istart+istep*self._randbelow(n) #调用randbelow函数处理
  • Instanz:
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倍整数的随机数

Ergebnis:

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. random.choice(seq)

Eine zufällige Auswahlfunktion, seq ist eine nicht leere Menge, wählt zufällig ein Element in der Menge für die Ausgabe aus und der Elementtyp ist nicht begrenzt.

Kernquellcode:

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

Zeitverantwortung des Funktionsalgorithmus: O(1)

Beispiel:

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()

Diese Funktion bildet eine beliebige Gleitkommazahl von 0,0 bis 1,0, links geschlossen und rechts offen, ohne Parameter.

Instanz:

import random

for j in range(5):
    print(random.random(),end=' ')

Laufergebnis:

0.357486615834809 0.5928029747238529 0.37053940107869987 0.3802224543848519 0.9741990956161711

5. random.send(n=None)

Man kann die Zufallszahlengeneratorfunktion initialisieren, n stellt einen Zufallsstartwert dar; wenn n = Keine, ist der Zufallsstartwert die Systemzeit. Wenn n andere Daten wie int, str usw. sind, werden die bereitgestellten Daten als Zufallszahlenfolge verwendet Dieses Mal steht fest.

Instanz:

import random

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

Ergebnis:

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

6. random.getstate() und random.setstate(state):

getstate() Funktion Zu Zeichnen Sie den Zustand des Zufallszahlengenerators auf. Die Funktion setstate(state) wird verwendet, um den Generator auf den zuletzt aufgezeichneten Zustand zurückzusetzen.

Instanz:

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=' ')#两次输出的结果一致

Ergebnis:

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):

Mischen Sie den eingehenden Erfassungssequenzvorgang. Es kann nur für veränderliche Sequenzen wie Zeichenfolgen und Listen verwendet werden. Bei unveränderlichen Sequenzen wie Tupeln wird ein Fehler gemeldet, um die Operationsmethode außerhalb der Reihenfolge auszuwählen, z. B. random = random.

Kernquellcode:

for i in reversed(range(1,len(x))):
    j=randbelow(i+1)
    x[i],x[j]=x[k],x[i]

Zeitliche Komplexität des Funktionsalgorithmus: O(n)

Beispiel:

import random

lists=['mark','帅哥',18,[183,138]]
print(lists)
random.shuffle(lists,random=None)
print(lists)

Ergebnis:

['mark', '帅哥', 18, [183, 138]]
['帅哥', 18, 'mark', [183, 138]]

8. random.sample(population,k):

Der Populationsparameter ist eine Sequenz, z. B. eine Liste, ein Tupel, eine Menge, eine Zeichenfolge usw.; k Elemente werden zufällig aus der Menge ausgewählt, um a zu bilden Neue Sequenz. Die ursprüngliche Sequenz wird nicht geändert.

Schlechteste Zeitkomplexität: O(n*n)

Beispiel:

import random

lists=['mark','帅哥',18,[183,138]]
lists2=random.sample(lists,3)
print(lists)
print(lists2)

Ergebnis:

['mark', '帅哥', 18, [183, 138]]
['mark', [183, 138], '帅哥']

9. random.uniform(a, b)

Eine Funktion, die eine Gleitkommazahl zwischen den Parametern a und b generiert. Wenn a>b, generiert sie eine Gleitkommazahl zwischen b und a.

Kernquellcode:

return a+(b-a)*self.random()

Zeitkomplexität: 0(1)

Beispiel:

import random

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

Ergebnis:

2.8826090956524606
1.5211191352548408
3.2397454278562794
4.147879756524251
6.532545391009419

Das obige ist der detaillierte Inhalt vonAnalyse des Zufallsmoduls in Python (mit Beispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen