为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

手掌心 2023-04-18 15:28:43
我在编写代码来生成 5 个随机整数并找到 st. 开发者 5 个随机整数部分已完成,但 st。开发部分不正确。import randomimport mathranList = []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))
查看完整描述

3 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

只需像这样使用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 mean

total = 0

for num in lst:

   total += num


mean = total/len(lst)


# Subtract mean from each value and square

new_lst = []

new_sum = 0

for item in lst:

   square_diff = (item - mean)**2

   new_lst.append(square_diff)


# Find the average of all the values 

new_lst_sum = 0

for item in new_lst:

    new_lst_sum += item


# print results

standard_dev = float(new_lst_sum/len(new_lst))

print("Your standard deviation is:", standard_dev)

这代码更繁重且效率更低,但您可以清楚地看到逻辑。


查看完整回答
反对 回复 2023-04-18
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

您最新版本的代码中的错误应该s /= len(ranList)-1是s /= len(ranList). 有几件事需要考虑。首先,不要为测试随机生成列表,而是使用硬编码列表以便于验证。其次,考虑在函数中创建第二个内部列表,这样您就不会破坏传入的列表。


一个解决方案是


import math


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


查看完整回答
反对 回复 2023-04-18
?
九州编程

TA贡献1785条经验 获得超4个赞

您应该检查代码中的两个特定行。第一个是这样的:

s /= sum(ranList)-1

为了计算标准偏差,您需要将总和除以 N-1。相反,您将它除以 sum-1。len(list)建议使用返回列表长度的函数。

第二个是这样的:

数学.sqrt(s)

标准差公式需要返回变量的平方根s。实际上,该函数math.sqrt(float)返回参数的根,但不会将最终结果放入参数中。因此,您还应该将返回值分配给s.


查看完整回答
反对 回复 2023-04-18
  • 3 回答
  • 0 关注
  • 134 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信