Zufallszahlen in einem bestimmten Bereich erzeugen

Gast #6043356
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
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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.