Schleifen Problem
-
zenter schrieb:
Oder irre ich mich grad?
Ja.
-
Caligulaminus schrieb:
Ja.
Merci :), vielleicht ein wenig ausführlicher, wieso ich mich irre?
-
ananas schrieb:
Vergleiche nochmal deine beschriebene Bedingung mit deinem Code. Dann wirst du bemerken, dass dies nicht übereinstimmt.
-
ok, das mit dem random device wusste ich nicht. ich nehme alles zurück und behaupte das gegenteil
-
while(a < geld && a > 2);die größer/kleiner Zeichen ändern? Bringt nichts, bekomme auch nicht das Ergebnis was ich will. Die Lösung ist 100% einfach doch ich krieg sie grad nicht hin, mein Schädel droht zu explodieren.

-
Bist du dir sicher, das du den Code hier richtig wiedergegeben hast? Eigentlich kann die Schleife nicht unendlich laufen sondern nur einmal, da a nie gleichzeitig größer 20 und kleiner 2 sein kann.
-
Zenter schrieb:
while(a < geld && a > 2);die größer/kleiner Zeichen ändern? Bringt nichts, bekomme auch nicht das Ergebnis was ich will.
Damit hätten wir schon mal zwei der drei Operatoren betrachtet...
-
Dann soll es ein oder sein ||. Die Schleife läuft trotz all dem unendlich was ich nicht verstehe
-
while(a < 2 || a > geld);Das sollte die Lösung sein, und es schien mir unendlich weil es lange gedauert hat bis endlich eine Zahl von 2 - 20 gekommen ist, da der maximum Wert 4.294.967.295 ist. Das steig ich doch auf rand() um wenn es jedesmal 5 min braucht um eine kleine (in dem Fall) zufällige Zahl auszuwählen.
Danke für die Antworten
-
Zenter schrieb:
while(a < 2 || a > geld);Das sollte die Lösung sein, und es schien mir unendlich weil es lange gedauert hat bis endlich eine Zahl von 2 - 20 gekommen ist, da der maximum Wert 4.294.967.295 ist. Das steig ich doch auf rand() um wenn es jedesmal 5 min braucht um eine kleine (in dem Fall) zufällige Zahl auszuwählen.
Danke für die Antworten
Und auf einem 64-Bit-System kannste die
4.294.967.295(u.U.) gleich noch mal quadrieren.
Kein Grund jedoch, auf rand() umzusteigen. Schau dir mal den Modulus-Operator an(%).~Edit: Spezifizierung.~
-
Ja, leck xD und so einfach ist es. Danke dir !!

-
Zenter schrieb:
Das steig ich doch auf rand() um wenn es jedesmal 5 min braucht um eine kleine (in dem Fall) zufällige Zahl auszuwählen.
Du machst es dir aber auch besonders kompliziert, würdest du doch mit rand() auch nicht machen.
Früher, rand:
a = rand() % (geld-1) + 2Heute, random_device:
a = rd() % (geld-1) + 2Aber wenn du schon C++11 nimmst, nimm besser uniform_int_distribution:
std::uniform_int_distribution<> d(2, geld); a = d(rd);Außerdem: brauchst du wirklich random_device? Das sieht wie ein Spiel aus, da reicht ein normaler Pseudo-Zufallsgenerator (wie std::mt19937) vollkommen aus, random_device braucht man in der Regel nur bei kryptografischen oder ähnlichen Anwendungen.
-
Jop, is mir erst jetzt im nachhinein klar geworden
mfg Zenter
-
ipsec schrieb:
Außerdem: brauchst du wirklich random_device? Das sieht wie ein Spiel aus, da reicht ein normaler Pseudo-Zufallsgenerator (wie std::mt19937) vollkommen aus, random_device braucht man in der Regel nur bei kryptografischen oder ähnlichen Anwendungen.

Hier geht eine einfache Mersenne-Twister Engine. Seeden nicht vergessen.template<typename t> typename std::enable_if<std::is_integral<t>::value, t>::type xrand(t a, t b) { static std::mt19937 mtRandEngine(std::chrono::system_clock::now().time_since_epoch().count()); std::uniform_int_distribution<t> distribution(a, b); return distribution(mtRandEngine); }
-
Wenn du das static bei der distribution wegmachst, dürfte das hinhauen.
-
Kellerautomat schrieb:
Wenn du das static bei der distribution wegmachst, dürfte das hinhauen.
Uupsi, vertippt
thx