[PYTHON] Verwenden Sie die Blasensortierung, um zufällige Zufallszahlen basierend auf der Standardnormalverteilung aus einheitlichen Zufallszahlen zu generieren

Einführung

Es ist eine nutzlose Idee, die ich mir ausgedacht und implementiert habe, während ich verschiedene Sortieralgorithmen implementiert habe, während ich Python geübt habe, um die Zeit totzuschlagen.

Verwenden Sie die Blasensortierung, um Zufallszahlen basierend auf der Standardnormalverteilung zu generieren

Bei der Implementierung der Blasensortierung, der Sortierung zufällig generierter Daten und der Ermittlung der durchschnittlichen Häufigkeit denkt jeder natürlich, dass die Anzahl der Sortierungen auf einer einheitlichen Standardnormalverteilung basiert. Ich habe ein Programm erstellt, um Zufallszahlen basierend auf einer Standardnormalverteilung aus einheitlichen Zufallszahlen zu generieren.

Ist das Programm nützlich? ~~ Python-Vektor-Operation numpy

R = np.random.rand()


 Zufallszahlen basierend auf der Standardnormalverteilung können ohne Verwendung generiert werden. ~~

 Auch zufällig

#### **`random.normalvariate(mu, sigma)`**
```normalvariate(mu, sigma)

 Mit können Sie Zufallszahlen basierend auf einer Normalverteilung generieren.

 ~~ Mit anderen Worten, es ist eine nutzlose Idee, Zufallszahlen basierend auf der Standardnormalverteilung zu generieren, ohne numpy in Python zu setzen. ~~
 Nicht wirklich nützlich.

## Die folgenden Programme
```python
# -*- coding: utf-8 -*-
import random
import matplotlib.pyplot as plt

def bubble_sort(data,data_num):
	count = 0
	for i in range(0,data_num):
		for j in range(data_num-1,i,-1):
		 	if data[j] <= data[j-1]:
		 		count += 1
		 		data[j] , data[j-1] = data[j-1] , data[j]
	return count

if __name__ == '__main__':
	t = 10 #Anzahl der Zufallszahlen für jede Blasensortierung
	n = t*(t-1)/2 #Eine Standardnormalverteilung wird im Bereich von n erstellt
	y = [0]*n #Speichert, wie oft zum Sortieren benötigt wurde, als jede Blasensortierung durchgeführt wurde
	data = [] #T, um Daten jedes Mal zu sortieren

	for j in range(0,100000):
		count = 0
		for i in range(0,t):
			data.append(random.randint(1,100))

		count = bubble_sort(data,t)
		y[count] = y[count] + 1
		del data[:] #Dateninitialisierung

	plt.plot(y,marker="o")
	plt.show() 

figure_1.png

Über das Ergebnis

Dieses Mal habe ich 100.000 Mal eine Liste mit 10 Zufallszahlen sortiert und gezählt, wie oft jede Sortierung als neu generierte Zufallszahl durchgeführt wurde, und ein Diagramm erstellt. Wie Sie in der Grafik sehen können, fühlt es sich wie eine Standardnormalverteilung an. Die maximale Anzahl von Sortierungen, wenn n Daten nach Blasensortierung sortiert werden, beträgt n (n-1) / 2, diesmal gibt es also 10 Arten von Daten, also 10 * (10-1) / 2 = Die Berechnung ist 45. Der Grund, warum es wie eine Standardnormalverteilung aussieht, wird als das Muster von Zufallszahlen angesehen, die zur Anzahl der Sorten gehören.

Zusammenfassung

Es ist nur ein Selbstzufriedenheitsprogramm.

Recommended Posts

Verwenden Sie die Blasensortierung, um zufällige Zufallszahlen basierend auf der Standardnormalverteilung aus einheitlichen Zufallszahlen zu generieren
Ich habe versucht, eine zufällige FizzBuzz-Spalte mit Blasensortierung zu sortieren.
Generieren Sie mit SciPy eine Normalverteilung
Programm zur Wahl eines Präsidenten auf der Grundlage der Puri Ketsu-Demokratie aus ATND-Teilnehmern
Erstellen Sie in Python ein Diagramm der Standardnormalverteilung
So generieren Sie ein Python-Objekt aus JSON
Ich habe versucht, eine zufällige Zeichenfolge zu generieren
Python: Entpacken Sie die Standardeingabe mit zipfile