2017-07-21 1 views
0

Je viens récemment de commencer à coder et c'était un peu rude. On m'a récemment confié une mission qui me demande de créer un générateur de nombres qui génère 100 nombres de 1-1000. Après cela, j'ai besoin de trouver la moyenne du plus petit et le plus grand nombre dans la liste. J'ai eu du mal à trouver la moyenne, donc si vous pouvez m'aider ce serait génial!Comment créer un générateur de nombres ramdom qui génère 100 nombres de 1-1000 en python

Mon code:

import random 
for i in range(100): 
    y = random.randint(1, 1000) 
    print(y) 


def mean(values): 

     length = len(values) 

     total_sum = 0 

     for i in range(length): 
      total_sum += values[i] 
     total_sum = sum(values) 

     average = total_sum/length 

     return average 

x = [y] 

n = mean(x) 

print (n) 

Répondre

2

d'abord, obtenir vos cent numéros:

nums = [random.randint(1, 1000) for _ in range(100)] 

Utilisez 1001 comme deuxième argument range si vous voulez inclure 1000.

Ensuite, en moyenne le plus petit et le plus grand:

avg = (max(nums) + min(nums))/2. 

EDIT: J'ai changé 2-2. dans le calcul de la moyenne et Python évaluera l'expression comme un flotteur plutôt que d'un int. Autrement, Python ferait une division entière, ce qui arrondit votre moyenne à l'entier le plus proche.

+0

'Sinon Python ferait un entier division' spécifiquement python2, qui OP ne semble pas utiliser. –

+0

Est-ce la moyenne calc correcte ou serait-elle: sum (nums)/len (nums) – Bug

+0

La façon dont j'ai interprété OP, ils cherchent la moyenne de la min et la max ("moyenne du plus petit et le plus grand nombre dans la liste") – Will

3

Le problème est que vous générez une valeur aléatoire (y) et que vous la jetez.

Au lieu de cela, vous devez garder une liste des valeurs générées,

values = [] 
for i in range(100): 
    y = random.randint(1, 1000) 
    values.append(y) 

qui pourrait être plus compacte écrit

values = [random.randint(1, 1000) for i in range(100)] 

Ensuite, vous dupliquez travail:

# this finds the sum 
    total_sum = 0 
    for i in range(length): 
     total_sum += values[i] 

    # this *also* finds the sum (and overwrites your previous result) 
    total_sum = sum(values) 

Vous pouvez trouver les valeurs les plus petites et les plus grandes avec min() et max(); alors tout devient

values = [random.randint(1, 1000) for i in range(100)] 
smallest = min(values) 
largest = max(values) 
average = (smallest + largest)/2 
0

Peut-être que vous pouvez essayer:

In [1]: import random 
In [2]: random_nums = [random.randint(1,1000) for _ in xrange(100)] 
In [3]: len(random_nums) 
Out[3]: 100 
In [4]: random_nums_mean = (max(random_nums) + min(random_nums))/2 
In [5]: random_nums_mean 
Out[5]: 500 

Hope it helps.

0

Python est facile à écrire et à lire.

vous pouvez obtenir en moyenne et il suffit d'utiliser maxmin (chaque retour max, min de la liste)

from random import randint 

# it's generate 100 random number, it's called list comprehension. 
random_numbers = [randint(1, 1000) for _ in range(100)] 

average = (max(random_numbers) + min(random_numbers))/2