如何创建一个ramdom数字生成器,在python

时间:2017-07-21 01:27:40

标签: python

我最近才开始编码,而且有点粗糙。我最近得到了一项任务,希望我创建一个从1-1000生成100个数字的数字生成器。之后我需要找到列表中最小和最大数字的平均值。我找到平均值时遇到了麻烦,所以如果你能帮助我就会很棒!

我的代码:

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)

4 个答案:

答案 0 :(得分:3)

问题是你生成一个随机值(y),然后扔掉它。

相反,您需要保留生成的值列表

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

可以更紧凑地写为

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

接下来,您正在复制工作:

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

您可以使用min()max()找到最小和最大的值;然后整个事情就变成了

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

答案 1 :(得分:2)

首先,得到你的一百个数字:

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

如果要包含1001,请使用range作为1000的第二个参数。

接下来,平均最小和最大:

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

编辑:我在计算平均值时将2更改为2.,因此Python会将表达式计算为float而不是int。否则Python会进行整数除法,它基本上将平均值舍入到最接近的int。

答案 2 :(得分:0)

也许你可以试试:

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

希望它有所帮助。

答案 3 :(得分:0)

Python易于编写和阅读。

你可以平均使用maxmin(每次从列表返回最大值,最小值)

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