2012-12-08 3 views
6

Rastgele bir float almak için random.random() kullanıyorum (açıkçası!). Ama gerçekten yapmak istediğim şey şunun gibidir:Python'daki Rastgelelik

there's a 30% chance my app does this: 
    pass 
else: 
    pass 

Bunu yapmamda bana yardımcı olabilir misiniz?

+0

Gerçekten ne yapmaya çalışıyorsunuz? Sorunun belirsizliği ve @ hd1'in altındaki cevapta rastlantısallığın doğasıyla ilgili garip yorum dizisi arasında, oldukça belirsizdir. – dkamins

+0

@Dkamins, Ben biraz daha açık yapmak için yazıyı düzenledim, umarım. Zamanın% 30'unu gerçekleştirmek için buna ihtiyacım var, yoksa başka bir şey yap. Sadece genel bir algoritma arıyoruz. hd1'in mesajı öyle görünüyor - kabul etmeden önce biraz daha anlamaya çalışıyorum. –

+0

"% 30" değerini bir kayan değer olarak düşünüyorsanız, 'hd1' cevabını kabul edin; "10'dan 3'ü" olarak düşünüyorsanız, Oscar López'in cevabını kabul edin. İkisi de doğru ve eşdeğerdir, bu sadece sizin durumunuzda daha okunaklı ya da daha “doğru” gibi görünüyor. – abarnert

cevap

11
if random.random() > 0.5: 
    # your app does this 
    pass 
else: 
    # your app does that 
    pass 
+5

Bu rasgele() irrelephant

+0

Fakat bu soruya cevap veriyor mu? Asker bunu yapmak ister ki tekrar tekrar bir sikke döndürürse, rastgele sıralı sonuçlar verir, kafalara doğru% 40 (ya da her neyse) çarpıtılır. Cevabınız fizibil olarak% 0 kafa verebilir. – Aerovistae

+0

@Aerovistae OP sadece seçimi bir kez yapmayı önerdi, bence. – irrelephant

6

bu deneyin:

İşte
if random.randint(1, 10) in (1, 2, 3): 
    print '30% chance' 
else: 
    print '70% chance' 

randint 1-10 arasında bir sayı üretecektir, bu 1-3 ve 4-10 arası olduğunu% 70'lik bir şans aramda bir% 30 şans var

+1

@ hd1'in yönteminden daha az esnektir, çünkü bu yalnızca eşit olasılıklar sağlayabilir, ancak kullanışlı olabilir. İsterseniz, '== 1' de atlayabileceğinizi unutmayın. – Dougal

+2

Bu, olasılıklarınızın en iyi "1 in 2" veya "1 in 3" olarak tanımlanması durumunda daha iyi bir çözümdür. Tabii ki, rasyonel bir sayı için, her iki şekilde de tarif etme seçeneğiniz vardır, yani eğer random.randrange (10) <3 ', "random.random() <.3" kadar makul ise; Bu sadece sizin için daha net göründüğü bir meseledir. – abarnert