-8
votes

Combien de temps prendrait-il python pour générer un million de nombres différents?

est Python capable de générer un million de nombres aléatoires avec code xxx

et s'il peut, environ combien de temps faudrait-il?


2 commentaires

Vous générez un numéro unique là-bas. De plus, même lors de la génération de nombreux nombres, le goulot d'étranglement de votre code serait l'appel à Imprimer , car io est assez coûteux.


Vous pouvez également rechercher randint de package aléatoire numpy ; Il fournit un troisième paramètre pour définir la forme de la sortie, donc: un million ici. a = np.random.randint (1, 50, 1000000)


4 Réponses :


2
votes

Bien sûr que vous pouvez. Testez-le avec la bibliothèque de temps.

import time
import random
from random import randint
start = time.time()
for i in range(1000000):
    a = random.randint(1, 50)
end = time.time()
print('It took ' + str(end-start) +' seconds to generate 1000000 numbers')


2 commentaires

à partir de l'importation aléatoire Randint n'est pas nécessaire (vous pouvez l'utiliser, mais vous n'en utilisez pas dans votre code).


Merci de remarque, vous avez raison, édité.



0
votes

Votre code imprimera maintenant toujours le même numéro, car vous ne le générerez qu'une fois, puis imprimez-le un million de fois.

import random
for i in range(1000000):
    a = random.randint(1, 50)
    print(a)


0 commentaires

1
votes

Notez que votre code génère un seul entier aléatoire, puis l'imprime un million de fois.

Vous devez appeler randint () intérieur la boucle si vous souhaitez générer un million de nombres aléatoires.

Cela dit, selon les détails de la version de Python que vous utilisez et votre matériel, il suffit de générer un million d'entiers aléatoires ne devraient pas prendre plus de quelques secondes. Dans le code que vous avez montré, il faudrait beaucoup plus longtemps à impression eux.


0 commentaires

1
votes

Il faut 0,92 secondes sur mon ordinateur portable.

from timeit import timeit
timeit(lambda:[ random.randint(1,50) for _ in range(1000000) ], number=1) 


0 commentaires