• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Program zliczający ilość losowań potrzebny do trafienia "6"

Object Storage Arubacloud
+1 głos
133 wizyt
pytanie zadane 16 kwietnia 2021 w Python przez Anahan89 Obywatel (1,270 p.)

Hej,

program ma na celu zliczenie ile razy musiałbym losować kupon aby w końcu trafić "6". Ma wyświetlić ilość prób oraz wygrane cyfry. Niestety nie działa :D Ja nie potrafię już dziś zweryfikować co źle zobiłem (obstawiam że coś nie tak z pętlami). Bardzo proszę o wskazówki :)

tab=['a','e','x','t','b','3','536','2','5','6','79','5634','2','234','0']
win=['a','x','3','79','b']
t1=[]
active=True
p=0
while active:
    for i in range(5):
        wygrana=choice(tab)
        t1.append(wygrana)
    win.sort()
    t1.sort()
    if win==t1:
        p+=1
        print(f"Wygrałeś!! Potrzebowałeś {p} losowań a twój kupon to {t1}")
        active=False
    else:
        p+=1

 

komentarz 16 kwietnia 2021 przez reaktywny Nałogowiec (40,950 p.)
edycja 16 kwietnia 2021 przez reaktywny
win i tab posortuj raz, przed pętlą while. Zamiast zmiennej active wyjdź z pętli instrukcją break.

Zamiast wewnętrznej pętli for użyj może:

random.sample(tab, 5)

edutomek opisał resztę.

1 odpowiedź

+2 głosów
odpowiedź 16 kwietnia 2021 przez edutomek Dyskutant (8,380 p.)
wybrane 17 kwietnia 2021 przez Anahan89
 
Najlepsza

Zapewne wyjdę na forumowego marudę, ale co mi tam...

1) Napisałeś:

program ma na celu zliczenie ile razy musiałbym losować kupon aby w końcu trafić "6"

Tymczasem Twój kod może co najwyżej zliczać ile razy musiało następować losowanie, aby trafiło na wybrany przez Ciebie kod.

To nie jest to samo.

Ogólnie rzecz biorąc, losowanie to proces stochastyczny, a w takich przypadkach nie da się deterministycznie określić odpowiedzi na pytanie "ile razy trzeba losować, żeby...". Można co najwyżej obliczyć prawdopodobieństwo uzyskania danego wyniku w pewnej liczbie prób.

2) Zapewne błąd polega na tym, że nie czyścisz listy t1 po pętli.
Pierwsza pętla rozpoczyna się od pustej listy t1, do której dodajesz kolejne ("wylosowane") elementy. Przez to lista t1 staje się coraz dłuższa i warunek `t1 == win` może być spełniony tylko w pierwszej iteracji.

Wstaw na koniec (albo na początek) pętli t1 = [] i powinno pomóc. (Chyba - o ile dobrze rozumiem Twój problem.)

3) Tak na koniec: jeśli chcesz robić takie eksperymenty, to pamiętaj o odpowiedniej inicjalizacji generatora liczb pseudolosowych.

Zła inicjalizacja może doprowadzić do tego, że zawsze będą "losowane" te same liczby.

4) Jeszcze z innych uwag (skoro się dopiero uczysz):

- inkrementacja p występuje w obydwu gałęziach instrukcji warunkowej (czyli nie zależy od warunku),
- lista win jest sortowana wiele razy, choć po pierwszym sortowaniu nigdy się nie zmienia

komentarz 17 kwietnia 2021 przez Anahan89 Obywatel (1,270 p.)
Wielkie dzięki za odpowiedź. Kompletnie nie zwrocilem uwagi na to nadpisywanie listy...myslalem ze problem tkwi w petlach.

Podobne pytania

0 głosów
0 odpowiedzi 130 wizyt
pytanie zadane 25 października 2020 w Python przez smoothie Nowicjusz (120 p.)
0 głosów
1 odpowiedź 199 wizyt
pytanie zadane 28 listopada 2019 w Python przez sisOOO Obywatel (1,370 p.)

92,536 zapytań

141,377 odpowiedzi

319,452 komentarzy

61,922 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...