Heim  >  Artikel  >  Backend-Entwicklung  >  Python generiert sich nicht wiederholende Zufallszahlen und löst das Problem der Reihenfolge der Liste

Python generiert sich nicht wiederholende Zufallszahlen und löst das Problem der Reihenfolge der Liste

不言
不言Original
2018-04-09 15:05:572048Durchsuche

Der folgende Artikel wird Ihnen eine Methode zum Generieren sich nicht wiederholender Zufallszahlen in Python und zum Neuordnen der Liste vorstellen. Sie hat einen guten Referenzwert und ich hoffe, dass sie für alle hilfreich ist.

andom.sample(list, n) wählt zufällig n verschiedene Elemente aus der Liste

# -*- coding: utf-8 -*- 
import random 
# 从一个list中随机挑选5个 
list = [12, 23, 13, 14, 78, 234, 123, 12345] 
randomlist = random.sample(list, 5) 
print randomlist 
 
# 在range(10)中随机生成5个不重复的数,可以作为随机下标集合,然后到list中取数 
len = list.__len__() 
indexList = range(len) 
randomIndex = random.sample(indexList, 5) 
for i in randomIndex: 
 print "下标为%d" % i 
 print list[i]

aus, um die Liste zu mischen und zu sortieren außer Betrieb, random.shuffle(list), beachten Sie, dass die ursprüngliche Liste geändert wird

# -*- coding: utf-8 -*- 
import random 
# 对list洗牌,在原list上做改变 
list = range(10) 
print list 
random.shuffle(list) 
print "随机排序列表 : ", list

In Bezug auf die Generierung zufälliger, sich nicht wiederholender Zahlen war ich zweimal interviewt, ein Bewerbungsszenario war ein Losverfahren.

Die Lösung, die ich damals vorgeschlagen habe, war: Fügen Sie die generierte Zufallszahl (zufälliger Index des Arrays) in ein Array ein, und jedes Mal bestimmt die neu generierte Zufallszahl zunächst, ob sie bereits existiert und ob dies der Fall ist nicht vorhanden, fügen Sie dieses Array hinzu, und falls vorhanden, generieren Sie Zufallszahlen neu, bis die Anzahl der Elemente in diesem Array einen bestimmten Wert erreicht, und nehmen Sie dann dieses zufällige Index-Array zum ursprünglichen Array, um Elemente abzurufen. Der Interviewer fragte mich, wie hoch die Zeitkomplexität sei, und ich antwortete: O(n^2). Der Interviewer fragte mich, ob ich Verbesserungspläne hätte, aber ich dachte eine Weile darüber nach und konnte es nicht herausfinden.

Nachdem ich in den Schlafsaal zurückgekehrt war, sagte mein Mitbewohner: Sie können das ausgewählte Element und das letzte Element jedes Mal austauschen, wenn Sie das nächste Mal eine Zufallszahl generieren Generieren Sie n-1 Elemente, sodass Sie jedes Mal nur einmal Elemente austauschen müssen und nicht zum Array gehen müssen, um festzustellen, ob der aktuelle Index einmal generiert wurde ist bewundernswert.

Java stellt die Funktion list.contains(ele) bereit, die direkt feststellen kann, ob ein Element im angegebenen Container vorhanden ist. Dadurch entfällt die Notwendigkeit, eine Doppelschleife zu schreiben, aber die Zeitkomplexität ist immer noch O(n^2)

Aber heute habe ich mir die Beispielfunktion in Python angesehen (zufällige Auswahl von Startpunkten) und sie kann direkt die gewünschten Ergebnisse erzielen. Das nächste Mal werde ich eine Lotteriefunktion schreiben und es wird mit einer Codezeile erledigt.

Verwandte Empfehlungen:

So wählen Sie Elemente zufällig aus einer Liste in Python aus

Das obige ist der detaillierte Inhalt vonPython generiert sich nicht wiederholende Zufallszahlen und löst das Problem der Reihenfolge der Liste. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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