Zum Inhalt springen

Rand() begrenzen


Saturo

Empfohlene Beiträge

Hallo,

ich weiss, dass ich mit srand, gefolgt von rand() eine Zufallszahl aufrufen kann. Das Problem: Wie begrenze ich diese? Also, dass er mir zB keine Zahlen über 100 zurückgibt. Ich habe gelesen, dass man dies mit RAND_MAX dies erledigen soll:

"The constant RAND_MAX is the maximum value that can be returned by the rand function. RAND_MAX is defined as the value 0x7fff." ---> ?? Wie ändere ich diese Konstante?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also die Rand()-Funktionen sind relativ aufwendige mathematische Formeln die keine Timer abfragen, sondern mit der Input-Zahl verrechnungen anstellen, die halt einigermaßen gleichmäßige "Möchtegern-Zufallszahlen" erzeugen können. Die Endergebnisse dieser Rechnungen werden wieder als Eingabe verwendet um die nächsten Zufallszahlen zu berechnen. Die Modulo-Operation ist vom zeitlichen Aufwand ein Witz dagegen (ist nämlich nur eine stinknormale Division = Ein CPU-Befehl!) und fällt überhaupt nicht ins Gewicht. Wenn Dir die 2 Zeilen Code zu aufwendig sind, dann tust Du mir jetzt schon leid, denn oft kommt für noch einfachere Dinge wesentlich Komplizierteres auf einen Programmierer zu!

srand(time(0)); // das ist ja nur als Initialwert notwendig, weil sonst immer die gleiche Reihenfolge auftaucht. Versuche mal srand(5) einzugeben und die Ergebnisse werden immer gleich sein, weil das halt eine mathematische Reihenrechnung ist, die bei gleichem Eingangswert immer reproduzierbare Ausgangswerte liefert!

in Zukunft brauchst Du danach dann nur das hier aufrufen, sonst nix mehr

int v=rand()%10; // von mir aus 1000 mal hintereinander ergibt 1000 unterschiedliche Ergebnisse

Die Wahrheit ist: Es gibt eigentlich keine "echten" Zufallszahlen in der Computerwelt, daß einzige was wahrscheinlich zufällig ist sind die Eingaben des Benutzers. Selbst das Abfragen der Timer würde nämlich (theoretisch) unter den selben Bedingungen dieselben Ergebnisse erzielen!

<FONT COLOR="#a62a2a" SIZE="1">[ 15. November 2001 12:11: Beitrag 8 mal editiert, zuletzt von Crush ]</font>

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Eisenuli...leude, zerfleischt mich doch nicht gleich! :) Ich habe dich nur nicht verstanden, was du mit Modulodivision ausdrückehn wolltest-->dachte, es handelt sich wieder um 10 Zeilen Text....deshalb der Kompliziertkommentar :). Irgendwie habe ich den % Operator wohl verpennt...da war ich in der Schule nicht da :)

<FONT COLOR="#a62a2a" SIZE="1">[ 15. November 2001 16:14: Beitrag 3 mal editiert, zuletzt von Saturo ]</font>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Na entschuldige mal, Saturo. Deine Worte waren: "eine der Schwaechen von C", und dann sagst Du, Du haettest die Modulodivision in der Schule verpasst, eine Sache, die, weil sie ein Assemblerbefehl aller gaengigen Prozessoren ist, in jeder Programmiersprache eingebaut ist.

Wenn man sich anmasst, auf so einem Kenntnisstand ueber die Schwaechen einer Programmiersprache zu urteilen, dann riskiert man halt einen Spruch... ;)

Aber nix fuer ungut...

Uli

Link zu diesem Kommentar
Auf anderen Seiten teilen

Na entschuldige mal, Uli! ;) Die größte Schwäche von C ist ja wohl die Umständlichkeit...dadurch kann man nunmal auch alles mit der Sprache erreichen, oder willst du mir was anderes erzählen?

Das mit der Schule war ein Joke! Und meinen Kenntnisstand kann ich wohl noch am besten beurteilen! Nur, weil mir der Begriff "Moduloperator" nicht geläufig war, heisst das für dich wohl automatisch, dass ich totaleinsteiger bin ,oder? Wie abgehoben kann man denn sein...sorry. Ich hab mir die Sprache komplett selber beigebracht...niks mit dem Beruf zu tun gehabt. Dass ich mich nicht mit 26 jährigen FIAEs messen kann, ist ja klar. Jedoch kann ich mittlerweile schon beurteilen, welche Vorteile die Einzelnen Sprachen haben....dazu muss ich nicht studiert haben. nee...ich sag niks mehr dazu.

cu , der Rechtschreibspastiker

<FONT COLOR="#a62a2a" SIZE="1">[ 16. November 2001 16:29: Beitrag 6 mal editiert, zuletzt von Saturo ]</font>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...