Je veux un nombre aléatoire compris entre 0 et 1, comme 0,3452. J’ai utilisé random.randrange(0, 1)
mais c’est toujours 0 pour moi. Que devrais-je faire?
Vous pouvez utiliser random.uniform
import random random.uniform(0, 1)
random.random()
fait exactement cela
>>> 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
Si vous voulez des nombres vraiment aléatoires et couvrir la plage [0, 1]:
>>> import os >>> int.from_bytes(os.urandom(8), byteorder="big") / ((1 << 64) - 1) 0.7409674234050893
Vous pouvez essayer avec random.random()
random.random()
Retourne le prochain nombre à virgule flottante aléatoire dans la plage [0.0, 1.0).
random.randrange (0,2) Cela fonctionne!
vous pouvez utiliser le module numpy.random , vous pouvez obtenir un tableau de nombre aléatoire en forme de votre choix
>>> 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
RTM
À partir des documents pour le module random
Python:
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.
Cela explique pourquoi cela ne vous donne que 0, n’est-ce pas? range(0,1)
est [0]
. C’est choisir parmi une liste composée uniquement de cette valeur.
Aussi de ces documents:
random.random() Return the next random floating point number in the range [0.0, 1.0).
Mais si votre inclusion de la balise numpy
est intentionnelle, vous pouvez générer de nombreux flottants aléatoires dans cette plage avec un appel en utilisant la fonction np.random
.
Ma variante que je trouve plus flexible.
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