È possibile utilizzare random.sample
:
>>> random.sample(xrange(1,50), 6)
[26, 39, 36, 46, 37, 1]
"Il foglio di lavoro raccomanda la visualizzazione di ogni numero e l'impostazione a zero, ma non vedo come ciò sarebbe d'aiuto. "
assumendo questo è un incarico ed è necessario implementare il campionamento da soli, si potrebbe take a look at how random.sample
is implemented. È davvero informativo, ma potrebbe essere troppo complicato per le tue esigenze poiché il codice garantisce anche che tutte le sottosezioni siano anche un campione casuale valido. Per efficienza, utilizza anche approcci diversi a seconda delle dimensioni della popolazione.
Per quanto riguarda il foglio di lavoro, ritengo che si stia iniziando con un elenco di numeri da 1 a 49 e suggerisce di sostituire i numeri selezionati con 0 in modo da poterli saltare se riselezionati. Ecco alcuni pseudo codice per iniziare:
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
Se desiderate provare qualcosa di diverso, ci sono molti altri approcci da considerare per esempio randomizzare la lista troncando, o qualche forma di reservoir sampling.
Buona fortuna con la vostra assegnazione.
fonte
2012-11-29 15:12:40
Si consiglia di inviare quello che hai provato. – asheeshr
Ti rendi conto, naturalmente, che se non possono essere gli stessi, per definizione, non sono più davvero casuali. –
Sì, sono ancora casuali, solo che stanno tirato da un elenco leggermente più piccolo. – keirbtre