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
随机推荐
- BZOJ 1005: [HNOI2008]明明的烦恼(高精度+prufer序)
传送门 解题思路 看到度数和生成树个树,可以想到\(prufer\)序,而一张规定度数的图的生成树个数为\(\frac{(n-2)!}{\prod\limits_{i=1}^n(d(i)-1)!}\) ...
- Spring MVC rest接收json中文格式数据显示乱码
1.解决方法其中之一 在web.xml下添加配置: <!-- 编码配置 --> <filter> <filter-name>CharacterEncodingFil ...
- PAT 1036 Boys vs Girls (25 分)
1036 Boys vs Girls (25 分) This time you are asked to tell the difference between the lowest grade ...
- Python sqlite3.ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings......
完整的错误信息如下: You must not use 8-bit bytestrings unless you use a text _factory that can interpret 8-bi ...
- PHP 代码编写注意事项总结归纳
1- 编写模块化代码 良好的PHP代码应该是模块化代码.PHP的面向对象的编程功能是一些特别强大的工 具,可以把你的应用程序分解成函数或方法.你应该尽可能多的从你的应用程序的服务器端分开前端的HTML ...
- 前端学习笔记——引入css文件、样式优先级
CSS样式的引用方式有三种:行间样式表>内部样式表>外部样式表. 如果只有一种样式,那么优先级“由内到外 由近到远” 1.行间样式表--内联方式 内联方式指的是直接在 HTML 标签中的 ...
- 第一节:mybatis入门
1.新建数据表 本次测试使用mysql数据,数据库名称为mybatis,新建一张表person,建表语句如下: CREATE TABLE `person` ( `id` ) PRIMARY KEY a ...
- Scrapy框架: 登录网站
一.使用cookies登录网站 import scrapy class LoginSpider(scrapy.Spider): name = 'login' allowed_domains = ['x ...
- CentOS MySQL 5.7编译安装
CentOS MySQL 5.7编译安装 MySQL 5.7 GA版本的发布,也就是说从现在开始5.7已经可以在生产环境中使用,有任何问题官方都将立刻修复. MySQL 5.7主要特性: 更好的性能: ...
- HDU 4652 Dice (概率DP)
版权声明:欢迎关注我的博客,本文为博主[炒饭君]原创文章,未经博主同意不得转载 https://blog.csdn.net/a1061747415/article/details/36685493 D ...