Forum >> Principianti >> [Random] Estrae numeri non ripetendoli

Pagina: 1

ho scritto questo programmino davvero elementare in pyhton.

import random 

for i in range(10): 
    numcasuale = random.randint(1,100)  
    print(numcasuale)  

Però ora vorrei che i 10 numeri random non capitassero mai ripetuti. Ho provato con le condizioni IF ma se il programma trova un numero ripetuto si limita a non stamparlo e i numeri ottenuti diventano 9. Dovrebbe ripetere l'estrazione.
QUalcuno può aiutarmi?

--- Ultima modifica di kimal73 in data 2016-12-22 10:29:25 ---
Sono tante le strade che puoi seguire, una delle più facile potrebbe essere quella di controllare la lunghezza di una lista. Ma facciamo un esempio che vale più di mille parole:
>>> import random
>>> l = []
>>> while len(l) < 10:
...    numero = random.randint(1,100)
...    if numero not in l:
...        l.append(numero)
Il while termina quando la lista ha 10 numeri al suo interno.

Cya
Grazie! lo provo subito.
Ma ho notato che su 10 numeri per ora anche con la prima versione che ho postato è molto difficile che mi dia un doppione. però non si sa mai! :)
Daniele aka Palmux said @ 2016-12-22 10:54:15:
Sono tante le strade che puoi seguire, una delle più facile potrebbe essere quella di controllare la lunghezza di una lista. Ma facciamo un esempio che vale più di mille parole:
>>> import random
>>> l = []
>>> while len(l) < 10:
...    numero = random.randint(1,100)
...    if numero not in l:
...        l.append(numero)
Il while termina quando la lista ha 10 numeri al suo interno.

Cya

Non so però in quale momento inserire print(numero)

se lo inserisco all'interno del while mi inizia a stampare numeri all'infinito...


--- Ultima modifica di kimal73 in data 2016-12-22 12:06:09 ---
Ho risolto. Era solo un problema di indentazioni.
Tuttavia alla terza prova mi da un doppione:




60 <

14

55

60 <

1

68

34

11

25

30





il programmino corretto è questo



import random

l = []
while len(l) < 10:
    numero = random.randint(1,100)
    if numero not in l:
        l.append(numero)
    	print(numero)



La domanda che ora mi pongo è questa:
con il modulo random si ottengono numeri casuali o pseudocasuali? come si possono ottenere numeri completamente casuali (ammesso che il caso per un elaboratore esista)?


--- Ultima modifica di kimal73 in data 2016-12-22 12:17:34 ---
il programmino corretto è questo

import random

l = []
while len(l) < 10:
    numero = random.randint(1,100)
    if numero not in l:
        l.append(numero)
    	print(numero)

A parte il print, dov'è la differenza con quello che ti ho postato?


con il modulo random si ottengono numeri casuali o pseudocasuali? come si possono ottenere numeri completamente casuali (ammesso che il caso per un elaboratore esista)?

Come ti dice la libreria stessa, si tratta di numeri pseudo-casuali. Non mi sono mai posto il problema di creare numeri completamente casuali e non so nemmeno se sia possibile farlo con un computer.

Ma lascio la parola a chi ne capisce più di me, non vorrei dire eresie.

Cya
Daniele aka Palmux said @ 2016-12-22 21:41:51:
il programmino corretto è questo

import random

l = []
while len(l) < 10:
    numero = random.randint(1,100)
    if numero not in l:
        l.append(numero)
    	print(numero)

A parte il print, dov'è la differenza con quello che ti ho postato?

Nessuna differenza. Ero io che avevo sbagliato le indentazioni e mi sballava tutto.


--- Ultima modifica di kimal73 in data 2016-12-22 22:10:17 ---
Nessuna differenza. Ero io che avevo sbagliato le indentazioni e mi sballava tutto.
Ah ok.

Cya
Buonasera, mi riallaccio a questa discussione...



Se io avessi 10 numeri (da 1 a 10 ) e li volessi estrarre TUTTI casualmente come posso fare ?

Perchè con il codice esempio di Daniele, su 100 ne estrae 10 quindi anche se pesca 8/10 codici doppi riempie comunque la lista con 10 valori differenti.

Se però io ho solo 10 valori e devo estrarli tutti casuali ma unici ... come posso fare ?




Grazie
------
Alberto
THE 🍺-WARE LICENSE (Revision ㊷):
<㎝🐌🐍.🇮🇹> wrote this post. As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you
think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝


Pagina: 1



Esegui il login per scrivere una risposta.