相关疑难解决方法(0)

使用STL容器进行中值计算时,正确的方法是什么?

假设我需要从1000000个随机数值序列中检索中值.

如果使用任何但是 STL ::名单,我没有(内置)的排序方式为中值计算序列.

如果使用STL :: list,我不能随机访问值来检索排序序列的中间(中位数).

是自己实现排序和使用例如STL :: vector更好,还是使用STL :: list并使用STL :: list :: iterator for-loop-walk到中值?后者似乎不那么开销,但也感觉更难看..

或者我有更多更好的选择吗?

c++ algorithm containers stl median

40
推荐指数
5
解决办法
3万
查看次数

R - 在变量区间内计算滚动统计量的快速方法

我很好奇是否有人可以提出一种(更快)的方法来计算可变时间间隔(窗口)的滚动统计(滚动均值,中位数,百分位数等).

也就是说,假设有一个随机定时观察(即不是每日,或每周数据,观察只有时间戳,如在滴答数据中),并且假设您想查看中心和离散统计数据,您可以扩大并收紧计算这些统计数据的时间间隔.

我做了一个简单的for循环来做到这一点.但它显然运行得非常慢(实际上我认为我的循环仍在运行在我设置的一小部分数据样本上以测试其速度).我一直试图让ddply这样做 - 这对于每日统计数据来说似乎是不可能的 - 但我似乎无法摆脱它.

例:

样品设置:

df <- data.frame(Date = runif(1000,0,30))
df$Price <- I((df$Date)^0.5 * (rnorm(1000,30,4)))
df$Date <- as.Date(df$Date, origin = "1970-01-01")
Run Code Online (Sandbox Code Playgroud)

示例函数(运行非常慢,有很多观察结果

SummaryStats <- function(dataframe, interval){
  # Returns daily simple summary stats, 
  # at varying intervals
  # dataframe is the data frame in question, with Date and Price obs
  # interval is the width of time to be treated as a day

  firstDay <- min(dataframe$Date)
  lastDay  <- max(dataframe$Date)
  result <- data.frame(Date = NULL,
                       Average = NULL, …
Run Code Online (Sandbox Code Playgroud)

asynchronous r intervals plyr windowing

10
推荐指数
1
解决办法
3720
查看次数

在c ++中查找值集合的中值

可能重复:
计算存储在Vector-C++中的值的中值?

我需要存储一组值,然后才能计算其中值.

用于存储这些值的c ++中最好的容器是什么,如何找到中位数?

(我可能也希望能够删除特定元素,所以我认为设置可能不是最佳选择...)

c++ sorting median

2
推荐指数
1
解决办法
2036
查看次数

C++库中是否有中值函数?

我试图计算C++中排序数组的中位数,我想知道C++库中是否有内置函数来执行此操作.

c++

0
推荐指数
1
解决办法
6516
查看次数

使用C++查找向量的中值

我是一名编程学生,对于我正在研究的项目,我必须做的事情是计算int值向量的中值,并且必须通过传递函数来完成.也将载体随机地使用C++,其我在code.I'm已经写下随机发生器mt19937为此使用的排序函数和向构件的功能,如最初产生.begin(),.end().size().

我应该确保找到向量的中值,然后输出它

被困了,下面我已经把我的尝试包括在内了.那我哪里错了?如果您愿意给我一些指导或资源以便朝着正确的方向前进,我将不胜感激.

码:

#include<iostream>
#include<vector>
#include<cstdlib>
#include<ctime>
#include<random>
#include<vector>
#include<cstdlib>
#include<ctime>
#include<random>

using namespace std;

double find_median(vector<double>);
double find_median(vector<double> len)
{
    {
        int i;
        double temp;
        int n=len.size();
        int mid;
        double median;
        bool swap;

        do
        {
            swap = false;
            for (i = 0; i< len.size()-1; i++)
            {
                if (len[i] > len[i + 1])
                {
                    temp = len[i];
                    len[i] = len[i + 1];
                    len[i + 1] = temp;
                    swap = true;
                } …
Run Code Online (Sandbox Code Playgroud)

c++

-2
推荐指数
2
解决办法
8964
查看次数

标签 统计

c++ ×4

median ×2

algorithm ×1

asynchronous ×1

containers ×1

intervals ×1

plyr ×1

r ×1

sorting ×1

stl ×1

windowing ×1