Soru Pitonda 0 ile 1 arasında rastgele sayı [duplicate]


Bu sorunun zaten bir cevabı var:

0.3452 gibi 0 ile 1 arasında rastgele bir sayı istiyorum. kullandım random.randrange(0, 1) ama her zaman benim için 0 olur. Ne yapmalıyım?


44
2017-10-27 03:59


Menşei


@gidim: Bu daha spesifik bir soru örn. random.random() ([0,1)) Bu sorunun cevabıdır, ancak bağlandığınız soru değil ve bu nedenle bir kopya değildir. - jfs
randrange (a, b), INTEGERS değerini a (incl.) ve b (excl.) arasında döndürür - Julien


Cevaplar:


Kullanabilirsiniz random.uniform

import random
random.uniform(0, 1)

83
2017-10-27 04:06



Bu sadece return a + (b-a) * self.random() - John La Rooy
Sahip olduğundan emin ol import random - Bruno Bieri
Her zaman aynı sayıları elde etmek için, önce bir tohum ayarladığınızdan emin olun, sadece random.seed(123) - Rodrigo Laguna


random.random() tam olarak bunu yapar

>>> import random
>>> for i in range(10):
...     print(random.random())
... 
0.908047338626
0.0199900075962
0.904058545833
0.321508119045
0.657086320195
0.714084413092
0.315924955063
0.696965958019
0.93824013683
0.484207425759

Eğer istersen Gerçekten mi rastgele sayılar ve [0, 1] aralığını kapsayacak şekilde:

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

29
2017-10-27 04:01



random.random, [0,1] arasındaki değerleri döndürür, böylece geri dönüş asla 1 olmaz. - gidim
@gidim: randrange(a, b) dışlayan b her şey kadar *range() Python'da. Python kullanır seçenek a). OP gösterir randrange(), değil randint() her iki kenarı da içerir. - jfs


İle deneyebilirsiniz random.random()

random.random() Bir sonraki rasgele kayan nokta sayısını   aralık [0.0, 1.0).

itibaren https://docs.python.org/2/library/random.html


6
2017-10-27 04:04





random.randrange (0,2) bu çalışır!


4
2018-05-27 12:28



Referans olarak, OP 0 ile 1 arasında bir kayan nokta istediği halde, bu 0 ve 1 tam sayıları arasında bir seçim getirecektir. - JasTonAChair
Bu soruya nasıl cevap veriyor? Biri 0 ile 1 (özel) arasında bir kayan nokta numarası arıyor. - Willem Van Onsem


kullanabilirsiniz kullanabilirsiniz numpy.random modül, istediğiniz seçim şeklinde rastgele sayı dizisi alabilirsiniz

>>> import numpy as np
>>> np.random.random(1)[0]
0.17425892129128229
>>> np.random.random((3,2))
array([[ 0.7978787 ,  0.9784473 ],
       [ 0.49214277,  0.06749958],
       [ 0.12944254,  0.80929816]])
>>> np.random.random((3,1))
array([[ 0.86725993],
       [ 0.36869585],
       [ 0.2601249 ]])
>>> np.random.random((4,1))
array([[ 0.87161403],
       [ 0.41976921],
       [ 0.35714702],
       [ 0.31166808]])
>>> np.random.random_sample()
0.47108547995356098

3
2017-10-27 04:26





RTM

Python için dokümanlar random modülü:

Functions for integers:

random.randrange(stop)
random.randrange(start, stop[, step])

    Return a randomly selected element from range(start, stop, step).
    This is equivalent to choice(range(start, stop, step)), but doesn’t
    actually build a range object.

Bu neden sadece size 0 veriyor, değil mi? range(0,1) olduğu [0]. Sadece bu değerden oluşan bir listeden seçiyor.

Ayrıca bu dokümanlardan da:

random.random()    
    Return the next random floating point number in the range [0.0, 1.0).

Ama eğer numpy etiketi kasıtlıdır, bir aramayı kullanarak bir aramayı kullanarak o aralıkta birçok rastgele float oluşturabilirsiniz np.random işlevi.


2
2017-10-27 04:41





Daha esnek olduğumu bulduğum varyasyonum.

str_Key           = ""
str_FullKey       = "" 
str_CharacterPool = "01234ABCDEFfghij~-)"
for int_I in range(64): 
    str_Key = random.choice(str_CharacterPool) 
    str_FullKey = str_FullKey + str_Key 

-2
2017-07-20 23:59