Willekeurig getal tussen 0 en 1 in python

Ik wil een willekeurig getal tussen 0 en 1, zoals 0,3452. Ik gebruikte random.randrange(0, 1)maar het is altijd 0 voor mij. Wat moet ik doen?


Antwoord 1, autoriteit 100%

U kunt random.uniform

. gebruiken

import random
random.uniform(0, 1)

Antwoord 2, autoriteit 34%

random.random()doet precies dat

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

Als je echtwillekeurige getallen wilt, en om het bereik [0, 1] te dekken:

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

Antwoord 3, autoriteit 10%

Ik wil een willekeurig getal tussen 0 en 1, zoals 0,3452

random.random()is wat u zoekt:

Van python-documenten:
random.random()Retourneert het volgende willekeurige getal met drijvende komma in de
bereik [0.0, 1.0).


En trouwens, Waarom werkte je poging niet?:

Uw poging was: random.randrange(0, 1)

Van python-documenten:
random.randrange()Retourneert een willekeurig geselecteerd element uit range( start, stop, stap). Dit is gelijk aan choice(range(start, stop, step)), maar bouwt niet echt een range-object op.

Dus wat je hier doet, met random.randrange(a,b)is het kiezen van een willekeurig element uit range(a,b); in jouw geval van range(0,1), maar raad eens!: het enige element in range(0,1)is 0, dus het enige element dat u kunt kiezen uit range(0,1), is 0; dat is waaromje altijd 0terug kreeg.


Antwoord 4, autoriteit 4%

u kunt de module numpy.randomgebruiken, u kan een reeks willekeurig getallen krijgen in de vorm van uw keuze die u wilt

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

Antwoord 5

random.randrange(0,2) dit werkt!


Antwoord 6

RTM

Van de documenten voor de Python randommodule:

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.

Dat verklaart waarom het je slechts 0 geeft, het niet. range(0,1)is [0]. Het kiest uit een lijst bestaande uit die waarde.

Ook van die documenten:

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

Maar als uw opname van de numpyTag opzettelijk is, kunt u veel willekeurige drijvers genereren in dat bereik met één gesprek met behulp van een np.random-functie.


Antwoord 7

Mijn variatie die ik vind om flexibeler te zijn.

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 

Other episodes