如何使用C语言生成以下范围c随机数函数生成范围实数并计算平均数,标准差?

是否有算法来估计值集的中值,模式,偏度和/或峰度,但这不需要一次将所有值存储在内存中?

我想计算基本的统计数据:

  • 方差:平均偏差的平均值
  • 中位数:将较大一半的数字与较小的一半分开的值
  • mode:在集合中找到最频繁的值

计算任何这些的基本公式是小学算术,我知道它们.还有许多统计库可以实现它们.

我的问题是我正在处理的集合中的大量(数十亿)值:在Python中工作,我不能只使用数十亿个元素创建列表或哈希.即使我用C语言编写,十亿元素数组也不太实用.

数据未排序.它是由其他过程随机,即时生成的.每组的大小变化很大,并且不会提前知道大小.

我已经弄清楚如何很好地处理均值和方差,以任何顺序迭代集合中的每个值.(实际上,在我的情况下,我按照它们生成的顺序来看它们.)这是我正在使用的算法,礼貌:

  • 按计数除以总和,作为变量均值存储.

这种"在线"算法存在缺陷(例如,精度问题,因为sum_of_squares快速增长大于整数范围或浮点精度),但它基本上给了我所需要的,而不必存储每个集合中的每个值.

但我不知道是否存在类似的技术来估计额外的统计数据(中位数,模式,偏度,峰度).只要处理N值所需的内存远小于O(N),我就可以使用有偏差的估计器,或者甚至是在一定程度上损害精度的方法.

如果库具有"在线"计算这些操作中的一个或多个的功能,那么将我指向现有的统计库也会有所帮助.

问题背景:突然被各种差搞蒙了头,决定来好好理一理这各种差。

方差这个词,我们从中学时代就接触了,应该很熟悉。
它是用来衡量离散程度。概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。统计中的方差(样本方差)是各个数据分别与其平均数之差的平方的和的平均数

对于一组随机变量或者统计数据,其期望值我们由E(X)表示,即随机变量或统计数据的均值,然后对各个数据与均值的差的平方求和

为什么要弄标准差呢?因为直观呀。你想呀,方差是各个值与均值的差距的平方,从幂上来说,方差怎么说也是二次方上的东西了,要和原来的均值(一次方)上的东西比较,多不直观呀。就好像,三次元和二次元无法好好沟通一样(滑稽)。
另外,标准差又叫均方差

均方误差是各数据偏离真实值的距离平方和的平均数,也即误差平方和的平均数,计算公式形式上接近方差,它的开方叫均方根误差,均方根误差才和标准差形式上接近)。
那么,均方误差和方差最大的不同在哪?
在于,方差是离均值的距离,均方误差是离真实值的距离。

多个均方误差之和组成的总误差。
举个例子,前面说到的YOLO里的loss:

我要回帖

更多关于 c随机数函数生成范围 的文章

 

随机推荐