Hallo zusammen, ich versuche gerade in C eine Zufallszahl mit rand() zu erzeugen. Im netz steht, dass man das mit: "int zahl = rand()%(max-min)+min;" machen kann. Es kommt eine Zufallszahl heraus, die ist aber im 6 stelligen Bereich. Weiß jemand von euch wie das funktioniert? Ich möchte z.B. eine Zahl zwischen: 100 und 200 erzeugen. SG
helpme91 schrieb: > zahl = rand()%(max-min)+min; Mit min = 100 und max = 201 helpme91 schrieb: > Es kommt eine Zufallszahl heraus, die ist aber im 6 stelligen Bereich. Dann machst du etwas falsch. Da du aber nicht zeigst was du machst und wie du feststellst, dass die Zahl 6-stellig ist, kann die keiner sagen, was falsch ist.
helpme91 schrieb: > Ich möchte z.B. eine Zahl zwischen: 100 und 200 erzeugen Logisch wäre es, 100 als min und 200 als max zu nehmen - aber das probiere ich jetzt nicht extra aus. Georg
Vermutlich sind min und max Funktionen und alle Warnungen aus. Setze die Werte ein und kopiere den Code + Warnungen + Output hier hin
Für solche Anwendungen gibt es in MATLAB die "random numbers toolbox". Lässt sich zusätzlich installieren und erzeugt praktisch jede Zufallszahl die man sich nur denken kann - ganz zufällig! Oft tauchen sie sogar plötzlich und unerwartet auf dem Bildschirm aus. Alternative: Du erinnerst dich an MATHE Klasse 5 und nutzt die Multiplikation sowie Addition: 1: Runterskalieren 2: Offset draufrechnen
helpme91 schrieb: > Es kommt eine Zufallszahl heraus, die ist aber im 6 stelligen Bereich. Wahrscheinlich sind min und max vertauscht.
Es bleibt das Problem, dass die per modulo erzeugten Zufallszahlen u.U. nicht mehr gleichverteilt sind.
pumuggl schrieb: > Es bleibt das Problem, dass die per modulo erzeugten Zufallszahlen > u.U. nicht mehr gleichverteilt sind. Nein. Ist aber eh nur ein pseudo Zufall und der ist sowieso nicht wirklich gleich verteilt.
Danke, hat funktioniert. Eine Frage habe ich da noch, ich hab eine structur mit mit 4 members erstellt. In dieser structur habe ich ein struct array, befüllt ist es schon mit zahlen. Mein Problem ist, das ich nun von jeden member den größten wert ermitteln muss und ausgeben muss. Gibt es da eine Funktion in c? SG
In der C-Standard-Library nicht. Selber schreiben geht natürlich in C, ist auch nicht schwer.
helpme91 schrieb: > Mein Problem ist, das ich nun von jeden member den größten wert > ermitteln muss und ausgeben muss. > > Gibt es da eine Funktion in c? Im einfachsten Fall ist das eine Schleife mit 4 ifs (+2 Variablen). Du wirst hier aber auch viel bessere Versionen bekommen, die mit Boost und Templates 3 Bildschirme füllen um besser, schneller, sicherer und lesbarer zu sein.
Teo D. schrieb: > pumuggl schrieb: >> Es bleibt das Problem, dass die per modulo erzeugten Zufallszahlen >> u.U. nicht mehr gleichverteilt sind. > > Nein. Ist aber eh nur ein pseudo Zufall und der ist sowieso nicht > wirklich gleich verteilt. Ist Quatsch. Natürlich ist vernünftiger Pseudozufall gleichverteilt. rand() % x ist es nicht, außer x ist eine Zweierpotenz (dann werden einfach Bits weggeschnitten).
Sven B. schrieb: > rand() % x ist es nicht, außer x ist eine Zweierpotenz (dann werden > einfach Bits weggeschnitten). Eine man dort auch die Kirche im Dorf lassen sollte: bei %101 und RAND-MAX 32767 kommen 0..43 häufiger vor als 44..100. also nicht je mit 0.990% Wahrscheinlichkeit, sondern die einen mit 0.993% und die anderen Mi 0.987% also einmal mehr nach 324 Malen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.