编写生成 5 个随机数并找出标准差的程序

我在编写代码来生成 5 个随机整数并找到 st. 开发者 5 个随机整数部分已完成,但 st。开发部分不正确。


import random

import math


ranList = []


for x in range(0, 5):

    n = random.randint(1, 10)

    ranList.append(n)


print("Here is the list of 5 random numbers:")

print(ranList)

print("The standard deviation is: ")


def stDev(ranList):      

    ranList = ranList.copy() 

    xbar = sum(ranList)/len(ranList)

    for i in range(len(ranList)):

        ranList[i] -=  xbar

        ranList[i] *= ranList[i]

    s = sum(ranList)

    s /= len(ranList)-1

    return math.sqrt(s)


print(stDev(ranList))


手掌心
浏览 178回答 3
3回答

元芳怎么了

只需像这样使用statisticspython 提供的模块:import statistics import random# creating sample data lst = []for x in range(0, 5):   n = random.randint(1, 10)   lst.append(n) # also don't add semicolons after lines of code, that's not proper formatting# Prints standard deviation print("Standard Deviation of sample is:", statistics.stdev(lst))如果您不想使用内置函数,请尝试:# Find the meantotal = 0for num in lst:   total += nummean = total/len(lst)# Subtract mean from each value and squarenew_lst = []new_sum = 0for item in lst:   square_diff = (item - mean)**2   new_lst.append(square_diff)# Find the average of all the values new_lst_sum = 0for item in new_lst:    new_lst_sum += item# print resultsstandard_dev = float(new_lst_sum/len(new_lst))print("Your standard deviation is:", standard_dev)这代码更繁重且效率更低,但您可以清楚地看到逻辑。

叮当猫咪

您最新版本的代码中的错误应该s /= len(ranList)-1是s /= len(ranList). 有几件事需要考虑。首先,不要为测试随机生成列表,而是使用硬编码列表以便于验证。其次,考虑在函数中创建第二个内部列表,这样您就不会破坏传入的列表。一个解决方案是import mathdef stDev(lst):    xbar = sum(lst)/len(lst)    mlst = [(v-xbar)**2 for v in lst]    s = sum(mlst)/len(mlst)    return math.sqrt(s)test = [1, 7, 4, 1, 10]result = stDev(test)print(test, result)

九州编程

您应该检查代码中的两个特定行。第一个是这样的:s /= sum(ranList)-1为了计算标准偏差,您需要将总和除以 N-1。相反,您将它除以 sum-1。len(list)建议使用返回列表长度的函数。第二个是这样的:数学.sqrt(s)标准差公式需要返回变量的平方根s。实际上,该函数math.sqrt(float)返回参数的根,但不会将最终结果放入参数中。因此,您还应该将返回值分配给s.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python