AMS算法
#include<stdio.h>
#include<stdlib.h>
#include<time.h> #define N 1000//采样点的个数
#define M 5//分组 #define SIZE 10000 typedef struct
{
int element;
int count;
}ATTRIBUTE; int main()
{
ATTRIBUTE attr[];
int secmom=;//真实二阶矩
int data;//接收读取之后的值
int i=,j,k;//循环控制变量
int count_tmp=;//临时计数变量
//int n=5;//采样点的个数
double secmom_estima=;
ATTRIBUTE sample[];
int tmp;
int a[];
int loc[N];//采样位置保存在数组里
int sample_group[M][N];
//FILE *fp =fopen("./stream_for_ams.txt","r"); FILE *fp =fopen("./stream_sample_ams.txt","r"); srand(time());
for(j=;j<N;j++)
{
loc[j]=rand()%SIZE;//获取随机采样位置
} for(j=;j<N;j++)//随机位置排序
{
for(k=j+;k<N;k++)
{
if(loc[j] > loc[k])
{
tmp = loc[k];
loc[k]=loc[j];
loc[j]=tmp;
}
}
} if(fp == NULL)//文件读取失败
{
printf("file can't open!\n");
exit();
}
while(!feof(fp))
{
fscanf(fp,"%d",&data);
a[i]=data;//存数据
/***************采样*****************/
for(j=;j<N;j++)
{
if(loc[j] == i)
{
sample[j].element=data;
sample[j].count=;
}
if(sample[j].element == data)
{
sample[j].count+=;
}
} /*****************真实***********************/
for(j=;j<count_tmp;j++)
{
if(attr[j].element == data)//如果该数据被存过则count+1
{
attr[j].count +=;
break;//扫描比对成功退出循环
}
}
if( j == count_tmp)//如果没有该数据第一次出现
{
attr[count_tmp].element=data;//记录
attr[count_tmp].count=;
count_tmp++;//记录第一次出现的数
}
printf("%.2lf%%\r", i * 100.0/ SIZE);
i++;
} /******************组合估计二阶矩***********************/
for(i=;i<M;i++)//分组M
{
for(j=;j<N;j++)//每组N个随机位置
{
loc[j]=rand()%SIZE;//获取随机采样位置
}
for(j=;j<N;j++)//随机位置排序
{
for(k=j+;k<N;k++)
{
if(loc[j] > loc[k])
{
tmp = loc[k];
loc[k]=loc[j];
loc[j]=tmp;
}
}
}
for(j=;j<N;j++)
{
if(loc[j] == i)
{
sample_group[i][j]=
sample[j].count=;
}
if(sample[j].element == data)
{
sample[j].count+=;
}
} } /************估计无组合估计二阶矩**********************/
for(j=;j<N;j++)
{
secmom_estima+=SIZE*(2.0*sample[j].count-);
}
printf("无组合估计二阶矩:%.2lf\n",secmom_estima/N); /***********真实二阶矩*************/
for(j=;j<count_tmp;j++)
{
//printf("%d\t%d\n",attr[j].element,attr[j].count);
secmom+=attr[j].count*attr[j].count;
}
printf("独立数%d\n",count_tmp);
printf("真实二阶矩为:%d\n",secmom); system("pause");
return ;
}
AMS算法的更多相关文章
- 数据结构与算法之PHP排序算法(归并排序)
一.基本思想 归并排序算法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,使每个子序列有序,再将已有序的子序列合并,得到完全有序的序列.该算法是采用分治法(Divid ...
- Android进程调度之adj算法
copy from : http://gityuan.com/2016/08/07/android-adj/ 一.概述 提到进程调度,可能大家首先想到的是Linux cpu调度算法,进程优先级之类概念 ...
- Python机器学习笔记:奇异值分解(SVD)算法
完整代码及其数据,请移步小编的GitHub 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/MachineLearningNote 奇异值分解(Singu ...
- B树——算法导论(25)
B树 1. 简介 在之前我们学习了红黑树,今天再学习一种树--B树.它与红黑树有许多类似的地方,比如都是平衡搜索树,但它们在功能和结构上却有较大的差别. 从功能上看,B树是为磁盘或其他存储设备设计的, ...
- 分布式系列文章——Paxos算法原理与推导
Paxos算法在分布式领域具有非常重要的地位.但是Paxos算法有两个比较明显的缺点:1.难以理解 2.工程实现更难. 网上有很多讲解Paxos算法的文章,但是质量参差不齐.看了很多关于Paxos的资 ...
- 【Machine Learning】KNN算法虹膜图片识别
K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- 红黑树——算法导论(15)
1. 什么是红黑树 (1) 简介 上一篇我们介绍了基本动态集合操作时间复杂度均为O(h)的二叉搜索树.但遗憾的是,只有当二叉搜索树高度较低时,这些集合操作才会较快:即当树的高度较高(甚至一种极 ...
- 散列表(hash table)——算法导论(13)
1. 引言 许多应用都需要动态集合结构,它至少需要支持Insert,search和delete字典操作.散列表(hash table)是实现字典操作的一种有效的数据结构. 2. 直接寻址表 在介绍散列 ...
- 虚拟dom与diff算法 分析
好文集合: 深入浅出React(四):虚拟DOM Diff算法解析 全面理解虚拟DOM,实现虚拟DOM
随机推荐
- Docker Machine 管理-创建machine(16)
对于 Docker Machine 来说,术语 Machine 就是运行 docker daemon 的主机.“创建 Machine” 指的就是在 host 上安装和部署 docker.先执行 doc ...
- bootstrap的模态框的使用
bootstrap的模态框 如果只想单独使用模态框功能,可以单独引入modal.js,和bootstrap的css,在bootstrap的包中,可引入bootstrap.js. 用法 通过data属性 ...
- *.tar 用 tar –xvf 解压 *.gz 用 gzip -d或者gunzip 解压 *.tar.gz和*.tgz 用 tar –xzf 解压 *.bz2 用 bzip2 -d或者用bunzip2 解压 、*.tar.bz2用tar –xjf 解压
解压: 1.*.tar 用 tar –xvf 解压, --skip-old-files跳过已经存在的文件,压缩用tar -cvf 2.*.bz2 用 bzip2 -d或者用bunzip2 解压 3.* ...
- php 字符串 定界符 json_last_error()
字符串的3种赋值 1:单引号 $str = '111111111111 '; 2:双引号 $str =" 11111111111 "; 3:定界符 $str = <<& ...
- 4.Grafana展示监控数据
Grafana是什么?我们知道Node_export监控服务器状态,但是没有具体的展示,简单来说,Grafana的主要作用就是对监控的数据进行图形化展示. docker部署 grafana我们这里采用 ...
- JVM系列文章合集
博客作者:纯洁的微笑 JVM系列(①):java类的加载机制 JVM系列(②):JVM内存结构 JVM系列(③):GC算法 垃圾收集器 JVM系列(④):jvm调优-命令大全(jps jstat jm ...
- python-面向对象中的特殊方法 ,反射,与单例模式
二,面相对象的特殊成员及相关内置函数 2.1 isinstance与issubclass isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class A: pass cl ...
- CTU OPEN 2017 Pond Cascade /// 思维
题目大意: 给定N F 给定N个水池的大小 每个水池都以流量F开始注水 当位置较前的水池注满后 水会溢出到下一个水池 求 最后一个水池开始溢出的时间 和 所有水池全部注满的时间 1.最后一个n水池开始 ...
- JS对象 屏幕分辨率的高和宽 window.screen 对象包含有关用户屏幕的信息。 1. screen.height 返回屏幕分辨率的高 2. screen.width 返回屏幕分辨率的宽
屏幕分辨率的高和宽 window.screen 对象包含有关用户屏幕的信息. 1. screen.height 返回屏幕分辨率的高 2. screen.width 返回屏幕分辨率的宽 注意: 1.单位 ...
- spring中bean的高级属性之list, set, map以及props元素(含举例)
转自:http://qingfeng825.iteye.com/blog/144704 list, set, map和props元素分别用来设置类型为List,Set,Map和Propertis的属性 ...