Można użyć random.sample
:
>>> random.sample(xrange(1,50), 6)
[26, 39, 36, 46, 37, 1]
„Arkusz zaleca wyświetlanie każdy numer i ustawienie go do zera, ale nie rozumiem, w jaki sposób to pomoże. "
Zakładając, że jest to zadanie i trzeba wdrożyć próbkowanie siebie, można take a look at how random.sample
is implemented. Jest to bardzo pouczające, ale może być zbyt skomplikowane dla twoich potrzeb, ponieważ kod zapewnia również, że wszystkie podsegmenty będą również prawidłową próbką losową. Ze względu na efektywność stosuje różne podejścia w zależności od wielkości populacji.
Jeśli chodzi o arkusz kalkulacyjny, to zakładam, że zaczynasz od listy liczb od 1 do 49 i sugeruje, aby zastąpić wybrane liczby cyframi 0, aby można było je pominąć, jeśli zostaną ponownie wybrane. Oto niektóre pseudo kod, aby dostać się zaczęło:
population = range(1, 50) # list of numbers from 1 to 49
sample = []
until we get 6 samples:
index = a random number from 0 to 48 # look up random.randint()
if population[index] is not 0: # if we found an unmarked value
append population[index] to sample
set population[index] = 0 # mark selected
Jeśli chcesz spróbować czegoś innego, istnieje wiele innych podejść do rozważenia np randomizację listy, a następnie obcięcie lub inną formę reservoir sampling.
Powodzenia z przydziału.
Powinieneś opublikować to, czego próbujesz. – asheeshr
Zdajesz sobie sprawę, oczywiście, że jeśli nie mogą być takie same, z definicji nie są już przypadkowe. –
Tak, nadal są losowe, tylko dlatego, że są pobierane z nieco mniejszej listy. – keirbtre