Случайное число от 0 до 1 в python

Я хочу случайное число от 0 до 1, например 0.3452. Я использовал random.randrange(0, 1), но для меня всегда 0. Что мне делать?

Ответ 1

Вы можете использовать random.uniform

random.uniform(0, 1)

Ответ 2

random.random() делает именно то, что

>>> 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

Если вы хотите действительно случайные числа и охватите диапазон [0, 1]:

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

Ответ 3

Вы можете попробовать с помощью random.random()

random.random() Возвращает следующее случайное число с плавающей запятой в диапазон [0.0, 1.0].

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

Ответ 4

random.randrange(0,2) это работает!

Ответ 5

вы можете использовать numpy.random модуль, вы можете получить массив случайных чисел в форме по вашему желанию.

>>> 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

Ответ 6

RTM

Из документов для модуля Python random:

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.

Это объясняет, почему он дает вам только 0, не так ли. range(0,1) - [0]. Он выбирает из списка, состоящего только из этого значения.

Также из этих документов:

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

Но если ваше включение тега numpy является преднамеренным, вы можете генерировать множество случайных чисел в этом диапазоне с помощью одного вызова с помощью функции np.random.

Ответ 7

Мое изменение, которое я считаю более гибким.

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