
RandomCube - Zufallszahlen erzeugen
Die Erzeugung von Zufallszahlen ist ein eigenes Thema in der Software-Entwicklung. Lavalampen, Würfel und analoges Rauschen sind interessante Möglichkeiten auch in einer Blockchain einzigarte Footprints zu generieren. Da ich jetzt den Zauberwürfel nach 40 Jahren endlich gelöst habe und den Alghorithmus gefunden habe, bin ich begeistert von dem Ding.
Ein klassischer 3x3x3-Zauberwürfel hat 43.252.003.274.489.856.000 mögliche Kombinationen, was auch als rund 43 Trillionen bezeichnet wird. Diese enorme Anzahl ergibt sich aus den verschiedenen Positionen und Ausrichtungen der einzelnen Steine des Würfels.
Wenn man für jede dieser Stellungen einen eigenen Zauberwürfel hätte und sie übereinander stapeln würde, ergäbe sich ein Turm, der rund 260 Lichtjahre hoch wäre. Die Lichtgeschwindigkeit beträgt im Vakuum – und somit auch im Weltall – 299.792.458 Meter pro Sekunde, das sind fast 300.000 Kilometer pro Sekunde. Ein Jahr hat 31,6 Millionen Sekunden, also entspricht ein Lichtjahr 9,46 x 10¹² = 9,46 Billionen Kilometer.
Hier meine Kreation mit zusätzlichen Elementen, wieviel Kombinationen damit möglich sind, habe ich noch nicht berechnet aber ich bin dran. Interessant die verschienden Winkel und Kombinationen der Umrandung.
Eine weitere Möglichkeit und eine Standardmethode ist analoges Rauschen an einem analogen Port abzugreifen und den Wert zu nutzen.
Hier ein Beispiel - Analoge Zufallswerte erzeugen - Arduino IDE
Um mit einem Arduino Zufallszahlen über den analogen Eingang zu generieren, nutzt man den analogen Input als "Seed" für den Zufallszahlengenerator. Man verwendet die Funktion randomSeed(analogRead(A0)); (oder einen anderen analogen Pin) als Seed, um bei jedem Programmstart einen anderen Startwert für die Pseudozufallszahlenfolge zu erhalten, da das analoge Rauschen des nicht angeschlossenen Pins für unterschiedliche Werte sorgt. Anschließend kann die Funktion random(max) oder random(min, max) aufgerufen werden, um Zufallszahlen innerhalb eines bestimmten Bereichs zu erzeugen.
Verbinden des analogen Pins: Verbinden Sie einen analogen Eingangspin (z. B. A0) des Arduino mit nichts, damit er das zufällige analoge Rauschen des Sensors aufnehmen kann.
Initialisieren des Seeds: Im setup()-Teil Ihres Arduino-Sketches verwenden Sie die Funktion randomSeed() und übergeben ihr den Wert von analogRead(A0). Diese Zeile initialisiert den Zufallszahlengenerator mit einem unterschiedlichen Startwert bei jedem Durchlauf.
Generieren der Zufallszahl: Im loop()-Teil des Sketches rufen Sie die Funktion random() auf.
randNumber = random(0, 100); erzeugt eine Zufallszahl zwischen 0 (einschließlich) und 100 (ausschließlich)
randNumber = random(10, 20); erzeugt eine Zufallszahl zwischen 10 (einschließlich) und 20 (ausschließlich)
Ausgeben der Zufallszahl: Verwenden Sie Serial.println(randNumber); in der seriellen Schnittstelle Ihres Computers, um die generierten Zufallszahlen zu sehen
long randNumber; void setup() { Serial.begin(9600); randomSeed(analogRead(A0)); // Initialisiert den Zufallszahlengenerator mit dem analogen Rauschen } void loop() { // Generiert eine Zufallszahl zwischen 0 und 299 randNumber = random(300); Serial.println(randNumber); // Kurze Pause, damit die Werte nicht zu schnell ausgegeben werden delay(50); }