Sto usando random.random()
per ottenere un float casuale (ovviamente!). Ma quello che voglio fare è qualcosa del tipo:Casualità in Python
there's a 30% chance my app does this:
pass
else:
pass
Potete aiutarmi a strutturare questo?
Sto usando random.random()
per ottenere un float casuale (ovviamente!). Ma quello che voglio fare è qualcosa del tipo:Casualità in Python
there's a 30% chance my app does this:
pass
else:
pass
Potete aiutarmi a strutturare questo?
if random.random() > 0.5:
# your app does this
pass
else:
# your app does that
pass
Probabilmente è più facile usare 'random()
Ma questo risponde alla domanda? Il richiedente vuole farlo in modo che se lancia una moneta ripetutamente, dà risultati ordinati a caso, inclinati del 40% (o di qualsiasi altra cosa) verso le teste. La tua risposta potrebbe dare in modo plausibile allo 0% di teste. – Aerovistae
@Aerovistae OP ha solo suggerito di fare la scelta una volta, credo. – irrelephant
Prova questo:
if random.randint(1, 10) in (1, 2, 3):
print '30% chance'
else:
print '70% chance'
Qui randint
genererà un numero compreso tra 1-10, c'è una probabilità del 30% che è tra il 1-3 e una probabilità del 70% che è tra 4-10
Meno flessibile del metodo di @ hd1, poiché questo può fare solo le stesse probabilità, ma conveniente. Nota che potresti anche saltare il '== 1' se lo volessi. – Dougal
Questa è una soluzione migliore quando le probabilità sono meglio descritte come "1 in 2" o "1 in 3". Naturalmente per un numero razionale, puoi scegliere di descriverlo in entrambi i modi, quindi 'se random.randrange (10) <3' è ragionevole come' random.random() <.3'; è solo una questione di cui ti sembra più chiaro. – abarnert
Cosa stai cercando di fare davvero? Tra la vaghezza della domanda e lo strano thread di commento riguardante la natura della casualità sulla risposta di @ hd1 di seguito, non è affatto chiaro. – dkamins
@Dkamins, ho modificato il post per renderlo un po 'più chiaro, spero. Ne ho bisogno per eseguire un'azione il 30% delle volte, altrimenti, fare qualcos'altro. Sto solo cercando un algoritmo generale. Sembra che il post di hd1 sia - sto solo cercando di capirlo un po 'di più prima di accettare. –
Se stai pensando al "30%" come valore float, accetta la risposta di 'hd1'; se la stai pensando come "3 su 10", accetta la risposta di Óscar López. Sono entrambi corretti e equivalenti, è solo una questione di cui è più leggibile o sembra più "giusto" nel tuo caso. – abarnert