Cześć, chciałabym stworzyć program, który trzy razy wylosuje po trzy liczby - tak, żeby w żadnym losowaniu się nie powtórzyły. Utknęłam na pierwszym losowaniu i nie umiem tego powtórzyć. Może coś podpowiecie? :)
random.sample(range(0,N),3)
Dzięki! To rzeczywiście daje mi trzy losowania, ale wtedy te liczby się powtarzają. Chodzi o to, żeby w kolejnym losowaniu nie wystąpiła żadna z tych liczb, która już była wcześniej.
Z kolei random.randint (1,n+1) daje brak powtórki liczby, ale kończy się na jednym losowaniu.
Wylosowane liczby możesz odkładać do struktury i sprawdzać przed powtórnym losowaniem.
Ok, dzięki!
Chyba jednak nie wiem jak. Dodaję do listy przez .append, ale i tak dostaję coś takiego:
[7, 9, 4], [4, 2, 10], [9, 5, 6]
sunflower napisał(a):
Chodzi o to, żeby w kolejnym losowaniu nie wystąpiła żadna z tych liczb, która już była wcześniej.
W takim razie, czemu nie losować od razu 9 liczb, a potem wynik podzielić na 3 części?
random.sample(range(0,N),9)
Nie jest to głupie, ale ja się dopiero uczę Pythona i nie umiem tego zrobić tak, żeby się dzieliło
lista=random.sample(range(0,N),9)
a=lista[0:3]
b=lista[3:6]
c=lista[6:9]
Działa! Dziękuję :)
A Python nie ma czegoś takiego jak Set z Javy? Wtedy można wrzucać je do Seta do momentu uzyskania 9 elementów. Samo wykorzystanie Setu sprawi, że nie będą się powtarzać ;)
Wszystko zadziałało, dziękuję za podpowiedzi :)
I przychodzę do Was z kolejnym pytaniem. Teraz chcę wylosować trzy razy po trzy liczby, które mogą się powtarzać.
Dostaję coś takiego:
"10, 1, 9], [7, 8, 10], [9, 8, 10"
I wszystko jest ok, tylko chciałabym je wyświetlać jako osobne listy. Na zasadzie:
Liczby z pierwszej trójki: [10, 1, 9]
i tak dalej.
Nie wiem, co zrobić z listą zagnieżdżoną z liście, żeby wyświetlać trzy listy z osobnymi opisami.
PS: Nie mogę wpisać listy zagnieżdżonej w liście, bo w podglądzie ją mam, ale po opublikowaniu postu znika. Ale tam są trzy listy w jednej liście.
@sunflower: po prostu dodajesz listę do listy.
lista = []
lista.append([10, 1, 9])
lista.append([7, 8, 10])
lista.append([9, 8, 10])
albo
lista = [[10, 1, 9], [7, 8, 10], [9, 8, 10]]
Do każdej listy możesz odwołać się przez się przez indeks. Np. druga lista lista[1]
to [7, 8, 10]
A jak chcesz się dobrać do elementu trzeciego listy drugiej: lista[1][2]
.
Losowanie trzech trójek:
import random
lista = []
N = 10
for i in range(3):
lista.append(random.sample(range(0,N),3))
print(lista)
Bardzo dziękuję! Zadziałało odwołanie do konkretnej listy. Nie znałam tego działania.
A trójki wybierałam z pętli while, ale for też sobie przetestuję :)