Wie bekommt meine Variable int nZahl einen zufälligen Wert


#1
Wie gibt man einer Variable einen zufälligen Wert.
Sagen wir ich habe die Variable int nZahl;
Ich will das int Zahl einen zufälligen Wert bekommt,
wenn das Programm startet. -Die Milisekunde ab der das Programm startet
soll der Wert meiner Variable int nZahl sein.
Was muss ich tun!
Bitte schreibt mir Jemand den Code für die Gabe eines zufälligen Wertes an int nZahl;
 

ComFreek

Mod | @comfreek
Moderator
#2
Nichts für ungut, aber es hat dich wohl länger gekostet, diesen Beitrag zu schreiben, als es dich gekostet hätte, bei Google nach "C++ random number" zu suchen. Von daher: Google is your friend ;)

Ansonsten empfehle ich noch ;)
C++:
nZahl = 4.
Reference: xkcd: Random Number
 
#3
Hab die Lösung in diesem Forum gefunden.
Zusammenfassung:

1. ganz oben:

C++:
#include <cstdlib>
#include <string>
#include <time.h>

#include<iostream>
#include <windows.h>
2. unter using namespace std;
#pragma comment (lib,"winmm.lib")

3. unter den angelegten Variablen: srand(time(NULL));

4. Zufallszahl als Wert für eine Variable:
nZahl = (rand()% 10) + 1;
%10 bedeutet das die Zufallszahl nicht höher als 10 ist.
So kannst du das Spektrum der Zufallszahl minimieren, auf welche Zahl du willst.
Du musst nur nach % eine Zahl hinschreiben.
oder
nZahl = (rand()% n2Schwierigkeitsgrad) + 1;
Du kannst auch den Wert einer Variable nehmen, um das Spektrum zu minimieren.
 
Zuletzt bearbeitet von einem Moderator:

ComFreek

Mod | @comfreek
Moderator
#4
Diese Lösung ist leider sehr schlecht :(

Warum die Windows-Abhängigkeit?

Bitte sowas nie verwenden!

1. In C++ bitte kein rand() mehr verwenden!
2. Modulo bei Zufallszahlen kann zu Bias führen, d.h. nicht alle Ausgänge sind "gleichwahrscheinlich" (fsov bei PRNGs).

Wirklich der zweite Google-Hit zu "C++ random number" liefert eine wunderbar ausführliche Erklärung: Random number generation in C++11: how to generate, how does it work?
 
#5
Manche Quelltextdatein sind nicht in der C++ Sprache integriert.
Für solche Elemente gibt es in der C++ Standartbibliothek Headerdatein,
die mit Linker mit dem C++ Programm verbunden werden:

Die Headerdatei für Ein und Ausgabe > cin und cout ist iostream und wirt
mit dem Präprozessor #include einkopiert.

#include <iostream>

iostream : um diese Befehle einzubinden:
- io = input, output = cout, cin , cout: c=console, also heißt der Befehl: console out << und cin heißt console input
- stream = Datenstrom, <<, >> = die Richtung wo der Datenstrom hinfließt: Mit dem Einbinden dieser Datei hast du die Möglichkeit >>Datenströme>> zu verwalten:
Die Ausgabe von Text auf dem Bildschirm + die Eingabe von Text auf der Tastatur.

using namespace std; sorgt dafür das man stadt
-std::cout und std::cin nur cout und cin schreiben muss,

Wenn zwei verschiedene Variablen oder Funktionen aus zwei verschiedenen Datein den selben Namen haben, vorallem bei einen Projekt an den mehrer Leute arbeiten, kann man bestimmte Teile eines Quelltextes in einem Namensbereich gruppieren.
Man verwendet Funktionen oder Variablen aus diesem Namensbereich, indem man dem Compiler durch using namespace mitteilt, das wir diesen Namensbereich verwenden möchten.
Durch using namespace std sagen wir den Compiler das wir den Namensbereich std, heißt Standart verwenden möchten.
 
Zuletzt bearbeitet:

zerix

Hausmeister
Moderator
#6
Manche Quelltextdatein sind nicht in der C++ Sprache integriert.
Für solche Elemente gibt es in der C++ Standartbibliothek Headerdatein,
die mit Linker mit dem C++ Programm verbunden werden:

Die Headerdatei für Ein und Ausgabe > cin und cout ist iostream und wirt
mit dem Präprozessor #include einkopiert.

#include <iostream>

iostream : um diese Befehle einzubinden:
- io = input, output = cout, cin , cout: c=console, also heißt der Befehl: console out << und cin heißt console input
- stream = Datenstrom, <<, >> = die Richtung wo der Datenstrom hinfließt: Mit dem Einbinden dieser Datei hast du die Möglichkeit >>Datenströme>> zu verwalten:
Die Ausgabe von Text auf dem Bildschirm + die Eingabe von Text auf der Tastatur.

using namespace std; sorgt dafür das man stadt
-std::cout und std::cin nur cout und cin schreiben muss,

Wenn zwei verschiedene Variablen oder Funktionen aus zwei verschiedenen Datein den selben Namen haben, vorallem bei einen Projekt an den mehrer Leute arbeiten, kann man bestimmte Teile eines Quelltextes in einem Namensbereich gruppieren.
Man verwendet Funktionen oder Variablen aus diesem Namensbereich, indem man dem Compiler durch using namespace mitteilt, das wir diesen Namensbereich verwenden möchten.
Durch using namespace std sagen wir den Compiler das wir den Namensbereich std, heißt Standart verwenden möchten.
Wozu dieser Beitrag?
ComFreek weiß was diese Codezeile bedeutet. Das ändert aber nichts an seiner Aussage. "using namespace" sollte man nicht verwenden und gehört zu den Bad Practices in C++.

Viele Grüße
Sascha
 
#7
Warum nicht. Es gibt auch Anfänger, die hier reinschauen und die vl.
nicht genau wissen worum es geht. Darauf zu achten, ist ja gut.
Es macht mir keine Umstände. Alles was ich lerne schreibe ich mir auf.
Ich bin hier um Erfahrungen und Wissen zu erhalten und auszutauschen.
Damit wir uns gegenseitig helfen.
Zu Weihnachten, "natürlich auch sonst nie" sollte man nicht zanken!

using namespace> die einen nutzen es ungern:

Ich hab herhausgefunden: Die einen nutzen es nicht gern:
"using namespace" darf nicht in Header Datein verwendet werden.
Wenn du Variablen Namen gibst kannst du dir nicht sicher sein,
ob's den schon in Namespace std; gibt.

die einen nutzen es gern:

Je größer ein Projekt wird, und je mehr Teile dazu aus unterschiedlichen Quellen dafür
zusammengeschraubt werden, desto größer die Wahrscheinlichkeit von Namenskollisionen,
insbesondere bei global gültigen Namen. (globale Variablen, Typen,)

namespace wurden eingeführt, damit verschiedene Programmteile,
die nicht zusammen verwendet werden können zusammenarbeiten können.
Diese Beschreibung ist sehr einfach gehalten:
Namensbereiche (namespace)

Das Com Freek das weiß dachte ich mir schon,
doch ich denke das viele Anfänger auch gern reinschauen,
-so gesehen positiv zu sehen!
 

ComFreek

Mod | @comfreek
Moderator
#8
Zuletzt bearbeitet:

zerix

Hausmeister
Moderator
#9
Warum nicht. Es gibt auch Anfänger, die hier reinschauen und die vl.
nicht genau wissen worum es geht. Darauf zu achten, ist ja gut.
Es macht mir keine Umstände. Alles was ich lerne schreibe ich mir auf.
Ich bin hier um Erfahrungen und Wissen zu erhalten und auszutauschen.
Damit wir uns gegenseitig helfen.
Zu Weihnachten, "natürlich auch sonst nie" sollte man nicht zanken!

using namespace> die einen nutzen es ungern:

Ich hab herhausgefunden: Die einen nutzen es nicht gern:
"using namespace" darf nicht in Header Datein verwendet werden.
Wenn du Variablen Namen gibst kannst du dir nicht sicher sein,
ob's den schon in Namespace std; gibt.

die einen nutzen es gern:

Je größer ein Projekt wird, und je mehr Teile dazu aus unterschiedlichen Quellen dafür
zusammengeschraubt werden, desto größer die Wahrscheinlichkeit von Namenskollisionen,
insbesondere bei global gültigen Namen. (globale Variablen, Typen,)

namespace wurden eingeführt, damit verschiedene Programmteile,
die nicht zusammen verwendet werden können zusammenarbeiten können.
Diese Beschreibung ist sehr einfach gehalten:
Namensbereiche (namespace)

Das Com Freek das weiß dachte ich mir schon,
doch ich denke das viele Anfänger auch gern reinschauen,
-so gesehen positiv zu sehen!
Das ist ja kein Problem. Es machte, zumindest auf mich, einen seltsamen Eindruck, dass ComFreek sagte, dass man es nicht nutzen sollte und du darauf "using namespaces" erklärt.
Deshalb die Frage. ;)


Viele Grüße
Sascha