Zufallszahlen in einem bestimmten Bereich erzeugen

Gast #6043356
Lesenswert?

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
Gast #6043376
Lesenswert?

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
Gast #6044315
Lesenswert?

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
Gast #6044392
Lesenswert?

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.
#6044451
Lesenswert?

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).
Gast #6044514
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren