PDA

Visualizza la versione completa : [PYTHON] Generare numeri random


petremic73
27-12-2005, 21:40
so che facilissimo ma nonostante questo non riesco a capire se bisogna scaricare un ulteriore libreria per usare il generatore random. Potete scrivermi due righe per fare questa modestissima operazion. mi serve un programmino che mi dia degli interi da 0 a 100.

toraz
27-12-2005, 23:27
Credo che questo dovrebbe andare bene. :)



import random

random.seed()
random.randint(0, 100)


http://www.python.org/doc/2.4.2/lib/module-random.html

petremic73
28-12-2005, 13:53
grazie per questa alternativa.
avevo risolto con:


import random
print int(uniform(0,100))

e se volessi generare numeri possibilmente diversi tra loro? come fare a mettere una condizione che controlli che la variabile non prenda valori uguali? possibile usare una variabile con indice tipo Numerand(1) o ancora meglio con indice variabile: Numerand(x)
????????
forse mi pongo un problema inutile... si pu fare diversamente?

toraz
28-12-2005, 15:15
Stai all'occhio perch uniform(0, 100) restituisce numeri maggiori o uguali a 0 e strettamente minori di 100, quindi se vuoi che ogni tanto salti fuori anche 100 non va bene; comunque visto che a te servono numeri interi, usa randint che ce l'hanno messa apposta. :)

Per il resto non ho capito di preciso cosa vuoi fare, vuoi che un numero venga generato al massimo una o n volte ma non di pi?

petremic73
28-12-2005, 16:37
estattamente. la variabile in questione deve restituire sempre valori diversi. Non mi ricordo come si imposta una condizione di confronto di una variabile con se stessa. Ossia se il secondo valore random uguale al primo allora ritorna all'inizio della funzione. se il terzo valore uguale al secondo o al primo allora torna all'inizio...e cos via. come si traduce?
grazie per la precissazione su uniform.

inoltre il tutto senza la riga:


random.seed()

funziona lostesso oppure indispensabile inserirla. Ma a cosa serve?

var
28-12-2005, 16:50
potresti creare un set e aggiungervi gli elementi causali n volte, ovviamente solo se il numero generato all'i-esima iterazione non e' gia' presente nel set.

ciao

var
28-12-2005, 16:58
ancora meglio:



print random.sample(xrange(n+1), n)

dove, ovviamente, n e' il numero di numeri casuali che vuoi generare.

http://docs.python.org/lib/module-random.html

ciao

petremic73
28-12-2005, 18:18
print random.sample(xrange(n+1), n)

Mi restituisce n numeri casuali aventi come massimo valore n e come minimo 0. non va bene perch devono comunque variare da 0 a 100 indipendentemente dal numero di volte che dicido si "peschi dal caso".

var
28-12-2005, 18:21
Originariamente inviato da petremic73

print random.sample(xrange(n+1), n)

Mi restituisce n numeri casuali aventi come massimo valore n e come minimo 0. non va bene perch devono comunque variare da 0 a 100 indipendentemente dal numero di volte che dicido si "peschi dal caso".

non credo di aver capito come mai la soluzione che ti ho proposto non vada bene. :master:

petremic73
28-12-2005, 18:25
nc=random.sample(xrange(n+1), c)

questa forse giusta in questo caso perche insersce una variabile c indipendente da n.
Ma vi chiedo:
sicuro che i valori casuali non si ripetono nello stesso processo?

Loading