Wątek przeniesiony 2020-03-24 19:14 z Inne języki programowania przez Adam Boduch.

Python losowanie bez powtórzeń

Odpowiedz Nowy wątek
Czerwony melon
2015-05-26 16:27
Czerwony melon
0

Witam

Chciałem napisać program, który wyświetli wszystkie elementy listy w przypadkowej kolejności bez powtórzeń. Wydaje mi się, że to powinno działać, ale wypisuje te elementy z powtórzeniami. Ktoś wie wie co tu jest nie tak?


import random

y = []

for i in range(1, 8):
    a = random.choice(["pies", "kot", "mysz", "jeleń", "kret", "byk", "stonoga"])
    if a not in y:
        print(a)
    else:
        y.append(a)
        continue

Pozostało 580 znaków

2015-05-26 16:31

Rejestracja: 8 lat temu

Ostatnio: 1 dzień temu

1

na tablicy zrob shuffle i po prostu ja wyswietl (cala)
http://stackoverflow.com/ques[...]g-a-list-of-objects-in-python

edytowany 2x, ostatnio: fasadin, 2015-05-26 16:32

Pozostało 580 znaków

2015-05-26 16:44

Rejestracja: 7 lat temu

Ostatnio: 1 miesiąc temu

2
import random;

data = ["pies", "kot", "mysz", "jeleń", "kret", "byk", "stonoga"]
x = random.sample(data, len(data))
print(x)

https://docs.python.org/2/library/random.html


The quieter you become, the more you are able to hear.

Pozostało 580 znaków

2015-05-27 14:16
Moderator

Rejestracja: 11 lat temu

Ostatnio: 15 godzin temu

0

Wydaje mi się, że to powinno działać, ale wypisuje te elementy z powtórzeniami. Ktoś wie wie co tu jest nie tak?

Twój kod nie ma prawa działać, nie będzie powtórzeń po takiej poprawce.

for i in range(1, 8):
    a = random.choice(["pies", "kot", "mysz", "jeleń", "kret", "byk", "stonoga"])
    if a not in y:
        print(a)
        y.append(a)

Ale szansa na wylosowanie siedmiu stworzeń wynosi 1/5040


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans, 2015-05-27 17:09
Dobrze powiedziane, moge tylko dopowiedzieć że żeby wyświetlić wszystkie permutacje to można użyć list(itertools.permutations(data)) , jest ich 5040. - fitz 2015-05-28 17:15

Pozostało 580 znaków

2019-01-07 11:31

Rejestracja: 1 rok temu

Ostatnio: 11 miesięcy temu

0
słowa =["pies", "kot", "mysz", "jeleń", "kret", "byk", "stonoga"]
import random as rm
while słowa:
  losowe = rm.choice(słowa)
  print(losowe)
  słowa.remove(losowe)

bez wcześniejszego liczenia elementów

kolejny temat z książki Dowsona ;)

edytowany 1x, ostatnio: BotaNick, 2019-01-07 11:32

Pozostało 580 znaków

2020-03-24 18:50

Rejestracja: 1 tydzień temu

Ostatnio: 2 dni temu

0

W moim przypadku doskonale działa ten kod. Plus wykorzystuje techniki,które poznałeś w rozdziałach wcześniej. Cheers!

import random

biblio = ["klamka" ,"ramka","bramka","damka","mamka"]
word = random.choice(biblio)
while biblio :
    for i in biblio:
        print(i)
        biblio.remove(i)

input ("Aby zakończyć program wciśnij klawisz 'Enter'")
edytowany 4x, ostatnio: Adam Boduch, 2020-03-24 19:14
To jest wykopywanie wykopywanych wykopalisk - enedil 2020-03-24 23:11

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0