Zufallsgenerator für Zahlen programmieren, wie?

4 Antworten

// 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");
}

SchakKlusoh  12.07.2016, 22:37

Auch nur eine Pseudo-Zufallszahl.

0
TheAceOfSpades  12.07.2016, 22:39
@SchakKlusoh

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

Soweit sollte dies aber seinen Zweck erfüllen.

0
SchakKlusoh  12.07.2016, 22:55
@TheAceOfSpades

Wie nennst Du das:

repeat
  Zufzahl = shl Zufzahl
  Zufzahl = Zufzahl + (Port(x) AND 1)
until Zufzahl == full
0
SchakKlusoh  14.07.2016, 20:56
@TheAceOfSpades

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_Zufallszahlengenerator

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

0
TheAceOfSpades  15.07.2016, 00:28
@SchakKlusoh

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. 

0

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.


Woher ich das weiß:Berufserfahrung – Softwareentewickler / Unternehmensberater bei CSDIT iR

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

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