Potórzenie losowania liczb trzy razy

0

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? :)

2
random.sample(range(0,N),3)
0

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.

2

Wylosowane liczby możesz odkładać do struktury i sprawdzać przed powtórnym losowaniem.

0

Ok, dzięki!

0

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]

2
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)
0

Nie jest to głupie, ale ja się dopiero uczę Pythona i nie umiem tego zrobić tak, żeby się dzieliło

1
lista=random.sample(range(0,N),9)
a=lista[0:3]
b=lista[3:6]
c=lista[6:9]
0

Działa! Dziękuję :)

1

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ć ;)

0

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.

2

@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)
1

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ę :)

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