Programmieren: wie kann ich beim programmieren einer einfachen Liste mit zufallszahlen verhindern das ich doppelte Zahlen erhalte?

5 Antworten

Du könntest ein Set statt einer Liste nutzen, eventuell ist das tatsächlich einfach als selber in der Liste zu suchen.

let s = new Set()
do {
  s.add(Math.random())
} while(s.size <30)

// und falls man wirklich einen Array brauchen würde
// Array.from(s)

Vermutlich ist das nicht immer die performanteste Lösung, aber schön einfach.

Und vermutlich ist es nicht das was von dir erwartet wird, also ist es lustiger das so zu lösen.

Das Beispiel ist in JS.

random.sample()

kannst du dafuer nehmen, das verhindert Duplikate selbst: https://docs.python.org/3/library/random.html


ralphdieter  06.03.2024, 17:31

Das geht mal gar nicht: Die Funktion tut doch genau das, was man braucht (und das auch noch effizient). Wie soll man da je lernen, das Rad neu zu erfinden?

4

Jedes mal, wenn du eine neue Zufallszahl generierst, gehst du einmal die Liste durch und schaust ob es sie schon gibt. Das solange wiederholen, bis du eine neue hast.

Eventuell könnte man die Zufallszahl zunächst als Substring in einer Variablen suchen, bevor man sie durch Semikolon getrennt an den String in der Variablen anhängt.

Gleichzeitig könnte man in einer Zählervarablen die erfolgreichen Anhänge hochzählen und bei 30 stoppen.

Am Ende wandelt man mit einer Splitfunktion die Variable in ein Array um.

alle zahlen kommen in ein array, eine do while schleife mit bedingung dass die anzahl der Werte in dem Array über 30. Und in der schleife prüfen ob wert schon vorhanden, wenn nein hinzufügen.