wie kann ich sowas lösen Zahlenproblem?
-
angenommen ich habe zufallszahlen von 1 bis 20
von diesen zahlen interessieren mich jedoch nur die 5, 10 , 15
leider liefert der Zufallsgenerator sehr oft die gleiche Zahl hintereinander
wie kann ich es nun programmieren das aus
1,7,7,5,5,17,20,15,15,15,15,12,10,10,14 folgende Werte extrahiert werden?
5,15,10...
ich dachte mir ich mache einen switch mit case 5 ,10 ,15
danach habe ich keinen Plan wie ich doppelte Werte filtern kann
wie würdet ihr das lösen
plz help
lg greenday
-
Gab's die gleiche Frage (und die gleiche merkwürdige Idee mit dem switch) nicht letztens schon mal?
edit: Ja, gab's. Sogar vom selben Autor.
-
(Zufallszahl % 3 +1) *5 liefert dir doch sofort, was du brauchst.
-
ja die frage gab es schon mal - leider habe ich noch keine lösung
-
Ich sag's mal auf Deutsch: Wenn die Zahl anders ist als die vorherige Zahl; und wenn die Zahl 5, 10, oder 15 ist; dann hast du eine der Zahlen, die du suchst.
Jetzt übersetzt du das nach C++.
PS: Allgemein: Wenn in einem Thread viele Gegenfragen und Spekulationen zu deiner Frage kommen und du nicht antwortest oder auf diese eingehst, dann ist es doch kein Wunder, wenn die Antworten dich nicht weiter bringen. Dann musst du keine weiteren Versuche mit der gleichen Frage unternehmen, sondern musst in deinem eigenen Thread aktiv sein!
-
yahendrik schrieb:
(Zufallszahl % 3 +1) *5 liefert dir doch sofort, was du brauchst.
Vorsicht, auch wenn er oft nur sehr gering ausfällt, ist der Modulo-Bias bei Zufallszahlen zwischen 1 und 20 recht stark ausgeprägt:
In diesem Bereich kann nach deiner Formel eine 5 durch 6 verschiedene Zufallszahlen erzeugt werden (3, 6, 9, 12, 15, 18),
eine 10 oder eine 15 jedoch durch jeweils 7 Zufallszahlen (1, 4, 7, 10, 13, 16, 19 und 2, 5, 8, 11, 14, 17, 20).
Das macht die 10 und die 15 jeweils etwa 16,67% wahrscheinlicher als eine 5.Wenn möglich, im Zweifelsfall besser
std::uniform_int_distribution(1, 3)
verwenden, dort ist der Effekt entsprechend berücksichtigt.
-
hallo seppj - ja du hast recht ich werde jetzt bei diesem Thread bleiben
aber mir ist noch immer nicht klar wie ich das lösen kann -
(Zufallszahl % 3 +1) *5 liefert dir doch sofort, was du brauchst.
das bringt mich leider nicht weiter.
ich brauche eine Möglichkeit die vorherige Zahl zu speichern und sie mit der aktuellen zu vergleichen - geht sowas nur mit einem Array?
ich habe noch ganz wenig Ahnung von c++
glg greenday
-
greenday schrieb:
ich brauche eine Möglichkeit die vorherige Zahl zu speichern und sie mit der aktuellen zu vergleichen - geht sowas nur mit einem Array?
Nein, nun wirklich nicht.
Vergiss mal dein Problem und lern ganz primitives Programmieren: Schreib ein Programm, das beliebig viele Zahlen vom Nutzer einliest und jedes Mal sagt, ob sie gleich oder ungleich zur vorherigen Zahl ist. Das Programm sollte in weniger als 10 Zeilen lösbar sein. Du brauchst dazu höchstens drei Variablen, keine davon braucht ein Array sein. Du brauchst nichts, was nicht in den ersten 5 Kapiteln eines Lehrbuchs beschrieben wird.
-
(Zufallszahl % 3 +1) *5 liefert dir doch sofort, was du brauchst.
das bringt mich leider nicht weiter.
Weil du dich (als Anfänger) darauf konzentrierst ein Problem das du selbst erst erzeugt hast mit einer Lösung zu korrigieren die du nicht programmiert bekommst
"(Zufallszahl % 3+1) * 5" liefert dir zufällig nur die Zahlen 5,10 und 15 - mehr nicht - damit musst du schon mal nicht mehr "falsche" Zahlen entfernen
aber mir ist noch nicht klar ob dein Beispiel überhaupt so praxis relevant für dich ist das unsere Tips was sinnvolles ergeben
Weil du uns ja nicht glaubst hier was fieses in C das genau das macht
http://cpp.sh/8suok - drück auf [Run]
und in der einfachsten Lösung musst du nur noch schauen ob der letzte wert und der aktuelle Wert gleich sind - fertig
-
und das Beispiel mit "besser" verteilten Zufallswerten mit dem "std::uniform_int_distribution(1, 3)" und ganz doll schönes C++
auch zum direkt ausführen - oben links [Run]
https://onlinegdb.com/SJcQcGWjMviele Wege führen nach Rom und lass dich nicht von den 5Mio Lösungswegen verwirren - mit der Zeit lässt das Gefühl der Hilflosigkeit nach