Analyse des Zufallsmoduls in Python (mit Beispielen)

不言
Freigeben: 2018-11-23 16:57:36
nach vorne
3216 Leute haben es durchsucht
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函数来处理
Nach dem Login kopieren

Beispiel:

import random

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

Ergebnis:

1 1 7 5 10 1 4 1 0 8 7 7 2 10 6 8 6 0 3 1
Nach dem Login kopieren

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函数处理
    Nach dem Login kopieren
  • 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倍整数的随机数
Nach dem Login kopieren

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
Nach dem Login kopieren

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]
Nach dem Login kopieren

Zeitverantwortung des Funktionsalgorithmus: O(1)

Beispiel:

import random

list3=["mark","帅",18,[183,138]]
for j in range(10):
    print(random.choice(list3),end=' ')
Nach dem Login kopieren

Code:

mark 帅 [183, 138] 18 mark 18 mark 帅 帅 [183, 138]
Nach dem Login kopieren

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=' ')
Nach dem Login kopieren

Laufergebnis:

0.357486615834809 0.5928029747238529 0.37053940107869987 0.3802224543848519 0.9741990956161711
Nach dem Login kopieren

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=' ')
Nach dem Login kopieren

Ergebnis:

4 1 10 5 6 2 8 5 5 10 7 2 9 6 2 6 0 5 10 10
Nach dem Login kopieren

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

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
Nach dem Login kopieren

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]
Nach dem Login kopieren

Zeitliche Komplexität des Funktionsalgorithmus: O(n)

Beispiel:

import random

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

Ergebnis:

['mark', '帅哥', 18, [183, 138]]
['帅哥', 18, 'mark', [183, 138]]
Nach dem Login kopieren

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)
Nach dem Login kopieren

Ergebnis:

['mark', '帅哥', 18, [183, 138]]
['mark', [183, 138], '帅哥']
Nach dem Login kopieren

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()
Nach dem Login kopieren

Zeitkomplexität: 0(1)

Beispiel:

import random

for i in range(5):
    print(random.uniform(10,1))
Nach dem Login kopieren

Ergebnis:

2.8826090956524606
1.5211191352548408
3.2397454278562794
4.147879756524251
6.532545391009419
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage