Frage von EierBrei, 45

Zufallsgenerator für Zahlen programmieren, wie?

Hi zusammen,

Ich bin komplett neu auf dem Gebiet des Programmierens und würde mir gerne einen Zufallsgenerator programmieren, welcher eine bestimmte Anzahl an Ziffern generiert. (Das soll am besten auf Knopfdruck oder etwas ähnlich einfachem geschehen). Die Programmiersprache ist mir erstmal egal, Hauptsache, ich verstehs und kann selbst schreiben.

Vielen Dank schon mal!

Antwort
von geri3d, 40

Die meisten Programmiersprachen haben einen eingebauten und einfach zu handhabenden "Pseudo-Zufallszahlen-Generator". Der liefert eine Zahl zwischen 0 und 1, also 0.4563456 oder irgendwas.

Diese Zahl multipliziert man und addiert man zu dem gewünschten Ergebnis, also ganze Zahlen von 0 bis 6 oder ähnlich.

Die erzeugten Zufallszahlen können jedesmal neu gewürfelt werden oder man bekommt immer die gleiche Folge an zahlen, wenn man den Zufallszahlengenerator nicht mit einem Befehl wie Randominze oder ähnlich initialisiert.

Beispiele mit Quellcode findet man im Web leicht in dem man seine gewünschte Programmiersprache eingibt gefolgt von Zufallszahlen oder Random.


Antwort
von karajan9, 36

Uh, ja. Das Problem hierbei ist viel weniger der Zufallsgenerator, als dass du noch gar nicht programmieren kannst. Selbst wenn wir dir jetzt die wunderschönste Erklärung eines Zufallszahlengenerators liefern, wird dir das ohne Programmierkenntnisse wenig bringen.

Wenn du einfach nur so etwas programmieren möchtest, würde ich dir die Programmiersprache Python empfehlen, die ist recht leicht zu erlernen.

Wenn du konkrete Probleme hast, meld dich gerne noch mal :-)

Antwort
von TheAceOfSpades, 22
// 5 Zufallszahlen [1,100]
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main(void)
{
    int min = 1;
    int max = 100;
    int num = 5;
    time_t t;

time(&t);
srand((unsigned int)t);

for (int i=0;i<num;i++)
printf("%d ", rand() % max + min);
printf("\n");
}
Kommentar von SchakKlusoh ,

Auch nur eine Pseudo-Zufallszahl.

Kommentar von TheAceOfSpades ,

Natürlich. Eine "wirkliche" Zufallszahl kann man nicht programmieren. 

Soweit sollte dies aber seinen Zweck erfüllen.

Kommentar von SchakKlusoh ,

Wie nennst Du das:

repeat
  Zufzahl = shl Zufzahl
  Zufzahl = Zufzahl + (Port(x) AND 1)
until Zufzahl == full
Kommentar von RedKungFuMastr ,

Ich nenn das zu faul für shift+enter ... rofl

Kommentar von SchakKlusoh ,

Du kannst gar kein Kung Fu.

Kommentar von TheAceOfSpades ,

Sorry aber ich weiß gerade nicht wirklich worauf du hinaus willst?

Kommentar von SchakKlusoh ,

Okay, Du hast eine vollständige Antwort verdient.

Ich habe in meiner Antwort oben erklärt, daß man aus dem thermischen Rauschen eines analogen Meßwertes eine echte Zufallszahl ableiten kann. Dazu nimmt man das LSBit (Port(x) AND 1) und schiebt es so lange in ein Schieberegister, bis man eine Zufallszahl der gewünschten Größe hat.

Das nennt sich True Random Number Generator.

https://de.wikipedia.org/wiki/Zufallszahlengenerator#Physikalischer_Zufallszahle...

Man kann also ein Programm schreiben, das eine echte Zufallszahl erzeugt.

Kommentar von TheAceOfSpades ,

Ok schon klar. 

Wobei die Zahl hier ja nicht wirklich durch das Programm erzeugt wird. Somit finde ich nicht, dass man die Zufallszahl als solche hier "programmiert". Sie steht ja schon vorher fest auf Grund eines physikalischen Ereignisses, wie du ja selber geschrieben hast. 

Hier habe ich das "Wie nennst du das" deswegen nicht wirklich verstanden.

Im Endeffekt ist das jetzt aber auch nicht so wichtig. ;)

Und EierBrei kann sich dann ja selber entscheiden ob er thermisches Rauschen und bitweisen Verschiebungen oder mathematische Pseudozufallszahlen will. 

Antwort
von happyfish2, 34

Dann beschäftige dich mit einer Programmiersprache deiner Wahl. Für Zufallszahlen gibts meist vorgefertigte Funktionen.

Antwort
von D4V1D1998, 33

Du kannst dir ja mal die Programmiersprache Go angucken. Ein Beispiel mit Erklärung für einen Zufallsgenerator findest du unter https://gobyexample.com/random-numbers und den Code kannst du online auf dieser Website ausprobieren: https://play.golang.org/

Kommentar von SchakKlusoh ,

Das ist auch nur eine Pseudo-Zufallszahl.

Kommentar von D4V1D1998 ,

Wahnsinn. Du kannst auch lesen.

Ich zitiere mal aus der Frage:

Ich bin komplett neu auf dem Gebiet des Programmierens

Hauptsache, ich verstehs

Verstanden?

Kommentar von SchakKlusoh ,

Was ist leichter zu verstehen?

  1. Nimm das thermische Rauschen einer physikalischen Quelle und mache daraus eine Zufallszahl oder
  2. Wende verschiedene mathematische Funktionen an, um zu verbergen, daß die Zufallszahlen einem Muster folgen und sich wiederholen?
Kommentar von MarcelDavis321 ,

Und welchem vom Computer generierte Zahl ist wirklich zufällig?

Kommentar von D4V1D1998 ,

Tatsächlich gibt es auf Linux/UNIX-Systemen ein System, welches verschiedenste Quellen nutzt, um zufällige Zahlen zu generieren: https://de.wikipedia.org/wiki//dev/random

Kommentar von SchakKlusoh ,

Das ist nichts anderes, als das, was ich hier die ganze Zeit erzähle.

Der Zufallsgenerator sammelt Umgebungsrauschen von Gerätetreibern und anderen Quellen

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten