Modul Random

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Whatgewesen
User
Beiträge: 12
Registriert: Freitag 24. August 2018, 12:15

Hallo zusammen,

ich habe eine Frage. Angenommen ich habe eine Liste mit vier Elementen erstellt und möchte mir dann genau zwei davon zufällig in eine neue Variable speichern und die "zwei nicht zufälligen" in eine andere. Geht das , dass er erkennt, welche zwei Elemente der Liste durch Zufall ausgewählt wurde? Und könntet ihr mir auch die dazugehörige Funktion sagen, die das möglich macht.

Danke und Beste Grüße
nezzcarth
User
Beiträge: 1634
Registriert: Samstag 16. April 2011, 12:47

Das kann man zum Beispiel mit random.sample und dem Set-Datentyp leicht lösen:

Code: Alles auswählen

In [1]: from random import sample

In [2]: items = set(range(20))

In [3]: random_items = set(sample(items, 5))

In [4]: rest = items - random_items

In [5]: items
Out[5]: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19}

In [6]: random_items
Out[6]: {3, 9, 13, 16, 17}

In [7]: rest
Out[7]: {0, 1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 14, 15, 18, 19}
Statt sich irgendwie etwas zu merken, ist es einfacher, mit getrennten Mengen zu arbeiten.
Zuletzt geändert von nezzcarth am Donnerstag 30. August 2018, 08:44, insgesamt 1-mal geändert.
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

ich würde random.shuffle machen & die Liste in zwei Hälften teilen.
narpfel
User
Beiträge: 645
Registriert: Freitag 20. Oktober 2017, 16:10

Die `set`-Lösung hat zusätzlich das Problem, dass es keine mehrfach vorkommenden Zahlen geben darf.
Whatgewesen
User
Beiträge: 12
Registriert: Freitag 24. August 2018, 12:15

Danke @alle
Antworten