2016-04-10 17 views
0

[0,1] 'dan rastgele sayılar üretmek istiyorum.[0,1] 'dan rasgele sayıları nasıl oluştururum?

import os 

int.from_bytes(os.urandom(8), byteorder="big")/((1 << 64) - 1) 

Yukarıdaki kod benim piton sürümünde çalışmaz.

Ayrıca

import random 

random.random() 

sadece 0,1 [rasgele değişkenleri) üretmek ve bunu yapmak tam olarak [0,1] Herhangi başka yollar olmak istiyorum 1. içermez?

+0

'random.uniform (0, 1)'? –

+0

@ajcr Belgeyi okudum ve random.uniform için diyor: "Son nokta değeri b, + (ba) * random() denklemindeki kayan nokta yuvarlamasına bağlı olarak aralığa dahil olabilir veya olmayabilir. " Bu yüzden random.uniform iyi bir seçim ise emin değilim. –

+1

@ Ralf17 Ancak bu, 'float', hassas sınırlamaları nedeniyle kesin sınırların kapsayıcı/ayrıcalıklılığını garanti edemez mi? – schwobaseggl

cevap

2

için Python'un random modülü:

import random 

# int 
x = random.randint(0, 1) # 0 or 1(both incl.) 

# float excl. 1.0 
x = random.random() # float from [0,1) 

ya, @ajcr tarafından işaret ve here açıklandığı gibi:.

# from [0.0, 1.0], but upper boundary not guaranteed 
x = random.uniform(0, 1) 

'ın float gibi hassas ve yuvarlama sorunlar tüm bu yöntemlere başvurmak, Bir kişi decimal modülünü aldatmayı ve kullanmayı deneyebilir:

import decimal 

def randfloat(): 
    decimal.getcontext().prec = 10 # 10 decimal points enough?! 
    return decimal.Decimal(0) + decimal.Decimal(random.uniform(0, 1)) 
# this should include both boundaries as float gets close enough to 1 to make decimal round 

>>> decimal.Decimal(0) + decimal.Decimal(0.99999999999) 
Decimal('1.000000000') 

# while uniform() apparently guarantees the inclusion of the lower boundary 
+1

Sürekli değişkenler veya floatlar oluşturmak istiyorum, random.randint (0, 1) sadece tamsayılar verirken random.random() [0,1] değil [0,1]. –

+1

Hmm ... hangi çözünürlüğe ihtiyacınız var? Tam kayan nokta hassasiyeti. Sth ile gidebilirsin. like random.randint (0, 10 ** 6) * 1.0/10 ** 6' – schwobaseggl

0

Aramak için bir araç ara random.uniform(0, 1)

İlgili konular