问题标签 [average]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
language-agnostic - 如何以一般方式减少对子集的平均计算?
编辑:由于似乎没有人阅读此链接到的原始问题,所以让我在这里介绍一下它的概要。
正如其他人所问的那样,最初的问题是,在给定大量值的情况下,总和将超过一种数据类型的值Double
,如何计算这些值的平均值。
有几个答案说要按组计算,比如取 50 和 50 个数字,然后计算这些组内的平均值,然后最后取所有这些组的平均值,然后将它们组合起来得到最终的平均值。
我的立场是,除非你能保证所有这些值都可以分成许多大小相等的集合,否则你不能使用这种方法。有人敢我在这里问这个问题,为了提供答案,所以就在这里。
基本上,给定任意数量的值,其中:
- 我事先知道值的数量(但同样,如果你不知道,你的答案会如何改变?`)
- 我无法收集所有数字,也无法将它们相加(对于您的编程语言中的普通数据类型而言,总和太大了)
如何计算平均值?
此处问题的其余部分概述了拆分成相同大小的集合的方法和问题,但我真的很想知道如何做到这一点。
请注意,我非常了解数学,知道在数学理论方面,计算总和A[1..N]/N
会给我平均值,让我们假设有一些原因它不那么简单,我需要拆分工作量,并且值的数量不一定能被 3、7、50、1000 或其他任何值整除。
换句话说,我所追求的解决方案必须是通用的。
从这个问题:
我的立场是,将工作量分成几组是不好的,除非你能确保这些组的大小是相等的。
编辑:最初的问题是关于特定数据类型可以容纳的上限,并且由于他汇总了很多数字(例如给出的计数是 10^9),因此数据类型无法容纳总和。由于这是原始解决方案中的一个问题,我假设(这是我的问题的先决条件,很抱歉错过了这一点)数字太大而无法给出任何有意义的答案。
因此,直接除以值的总数就可以了。正常 SUM/COUNT 解决方案失败的最初原因是 SUM 会溢出,但我们假设,对于这个问题,SET-SET/SET-SIZE 会下溢,或者其他什么。
重要的部分是我不能简单地求和,我不能简单地除以总值。如果我不能做到这一点,我的方法是否有效,我能做些什么来解决它?
让我概述一下问题。
假设您要计算数字 1 到 6 的平均值,但您不能(无论出于何种原因)通过对数字求和、对数字进行计数、然后将总和除以计数来做到这一点。换句话说,你不能简单地做 (1+2+3+4+5+6)/6。
换句话说,SUM(1..6)/COUNT(1..6)
出局了。我们在这里不考虑 NULL(如数据库 NULL)。
该问题的一些答案暗示能够将被平均的数字分成几组,比如 3、50 或 1000 个数字,然后为此计算一些数字,然后最后组合这些值以获得最终平均值。
我的立场是,这在一般情况下是不可能的,因为这会使一些数字,出现在最后一组中的数字,或多或少比前一组中的所有数字更有价值,除非你可以将所有数字平分大小的集合。
例如,要计算 1-6 的平均值,您可以将其分成 3 个数字的集合,如下所示:
这给了你这个:
(注意:(1+2+3+4+5+6)/6 = 3.5,所以这里是正确的)
但是,我的观点是,一旦不能将值的数量分成多个大小相等的集合,这种方法就会分崩离析。例如,包含素数值的序列 1-7 怎么样。
一种类似的方法,它不会一次性对所有值求和并计算所有值,是否可行?
那么,有没有这样的做法呢?如何计算任意数量的值的平均值,其中以下成立:
- 无论出于何种原因,我都无法进行正常的总和/计数方法
- 我事先知道值的数量(如果我不知道,那会改变答案吗?)
sql - 查询以计算连续事件之间的平均时间
我的问题是关于如何编写 SQL 查询来计算连续事件之间的平均时间。
我有一张小桌子:
我想构建一个查询,以获取 stage(i) 和 stage(i+1) 之间时间的平均值作为答案。
例如,第 2 阶段和第 3 阶段之间的平均时间为 5:
php - 用php计算平均数
是时候测试你的数学技能了……
我正在使用 php 查找 $num1、$num2、$num3 等的平均值;最多不定数量的数字。然后它将该平均值保存到数据库中。
下次调用 php 脚本时,会添加一个新号码。
是否有一个数学(很可能是代数)方程,我可以用它来找到包含新数字的原始数字的平均值。还是我需要将原始数字保存在数据库中,以便我可以查询它们并一起重新计算整个数字?
sql - MySQL:每个用户的最后 10 个条目?
我有一个存储用户事务数据的表。要查找用户评分,您可以取该用户最后 10 个条目的平均分数。有没有办法用 SQL 来实现它?
我需要能够为给定 ID 的单个用户解决这个问题。并获取按分数排序的所有用户的列表。
目前我正在 MySQL 之外解决它并将它存储在每个用户的另一个 col 中,这样我就可以 ORDER_BY 了。
sql-server - 加快数据库访问
我有一个包含每 0.1 秒收集一次的记录的数据库,我需要对给定日期的数据进行时间平均,每 20 分钟一次。所以我需要每 20 分钟返回一天的数据,即 24*3 的值。
目前,我每天每 20 分钟对数据库进行一次单独的 AVG 调用,即 24*3 次调用。我与数据库的连接似乎有点慢(它是远程的),并且需要大约 5 分钟才能完成所有平均值。做一个查询,我访问一整天的数据然后平均每 20 分钟会更快吗?如果有助于回答这个问题,我必须在平均之前对数据进行一些算术运算,即乘以几个表列。
python - 如何平均python中列表的某些大小的子部分?
我想从一个特定大小的列表(或数组)中取出一口,返回该口的平均值,然后继续下一个口并重新开始。有没有办法在不编写 for 循环的情况下做到这一点?
我正在寻找类似 np.average(x[:bitesize=4]) 的东西来返回:[1.5,5.5,8.5]。
我看过切片数组和遍历数组,但我还没有找到任何可以做我想做的事情的事情。
c# - 从两个索引之间的 double[] 获取平均值
我有一个包含许多数字的 double[] 数组。
我有一个算法,可以从该数组中选择符合某些条件的部分(值大于 x,至少 y 值等)
现在我想计算我部分中所有这些值的平均值。
所以,假设我的部分是从索引 20 到 40。现在我有 20 个值。有没有一种简单的方法可以在 C# 中做到这一点,还是我必须遍历我的数组并手动计算平均值?
sql-server - 数值 AVG() SQL Server 上的算术溢出
为什么
返回“将数字转换为数据类型数字的算术溢出错误。”?
文档说明了有关 avg 函数的以下内容:
输入:十进制类别(p,s)
输出:十进制(38,s)除以十进制(10,0)
我真的不明白它会如何溢出。
sql - 在 MySQL 查询中获取水平平均值的最有效方法是什么?
我有以下 MySQL 表
编辑:当然,默认情况下该表不需要为 NULL,但我不希望它影响平均值(因此平均值计算为 50 而不是 33,33)。
我希望它看起来像这样,使用 MySQL 查询:
实现这一目标的最有效方法是什么?
c++ - C++ STL List 计算平均值
我必须更正一些 C++/STL 代码。不幸的是,我几乎没有 C++ 经验,对 STL 一无所知。尽管如此,我完成了大部分工作,但下面的功能仍然给我带来了问题:
C++ 源代码:
C++ 头文件:
它很可能意味着从列表中计算平均值,但它符合很多错误。我试图在网上搜索解决方案,但我找不到任何东西。如果有人可以帮助我,我会很高兴。
更新:感谢您的快速回复。接受的答案解决了我所有的问题。