#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算法的更多相关文章

  1. 数据结构与算法之PHP排序算法(归并排序)

    一.基本思想 归并排序算法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,使每个子序列有序,再将已有序的子序列合并,得到完全有序的序列.该算法是采用分治法(Divid ...

  2. Android进程调度之adj算法

    copy from : http://gityuan.com/2016/08/07/android-adj/ 一.概述 提到进程调度,可能大家首先想到的是Linux cpu调度算法,进程优先级之类概念 ...

  3. Python机器学习笔记:奇异值分解(SVD)算法

    完整代码及其数据,请移步小编的GitHub 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/MachineLearningNote 奇异值分解(Singu ...

  4. B树——算法导论(25)

    B树 1. 简介 在之前我们学习了红黑树,今天再学习一种树--B树.它与红黑树有许多类似的地方,比如都是平衡搜索树,但它们在功能和结构上却有较大的差别. 从功能上看,B树是为磁盘或其他存储设备设计的, ...

  5. 分布式系列文章——Paxos算法原理与推导

    Paxos算法在分布式领域具有非常重要的地位.但是Paxos算法有两个比较明显的缺点:1.难以理解 2.工程实现更难. 网上有很多讲解Paxos算法的文章,但是质量参差不齐.看了很多关于Paxos的资 ...

  6. 【Machine Learning】KNN算法虹膜图片识别

    K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  7. 红黑树——算法导论(15)

    1. 什么是红黑树 (1) 简介     上一篇我们介绍了基本动态集合操作时间复杂度均为O(h)的二叉搜索树.但遗憾的是,只有当二叉搜索树高度较低时,这些集合操作才会较快:即当树的高度较高(甚至一种极 ...

  8. 散列表(hash table)——算法导论(13)

    1. 引言 许多应用都需要动态集合结构,它至少需要支持Insert,search和delete字典操作.散列表(hash table)是实现字典操作的一种有效的数据结构. 2. 直接寻址表 在介绍散列 ...

  9. 虚拟dom与diff算法 分析

    好文集合: 深入浅出React(四):虚拟DOM Diff算法解析 全面理解虚拟DOM,实现虚拟DOM

随机推荐

  1. BZOJ 1005: [HNOI2008]明明的烦恼(高精度+prufer序)

    传送门 解题思路 看到度数和生成树个树,可以想到\(prufer\)序,而一张规定度数的图的生成树个数为\(\frac{(n-2)!}{\prod\limits_{i=1}^n(d(i)-1)!}\) ...

  2. Spring MVC rest接收json中文格式数据显示乱码

    1.解决方法其中之一 在web.xml下添加配置: <!-- 编码配置 --> <filter> <filter-name>CharacterEncodingFil ...

  3. PAT 1036 Boys vs Girls (25 分)

    1036 Boys vs Girls (25 分)   This time you are asked to tell the difference between the lowest grade ...

  4. 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 ...

  5. PHP 代码编写注意事项总结归纳

    1- 编写模块化代码 良好的PHP代码应该是模块化代码.PHP的面向对象的编程功能是一些特别强大的工 具,可以把你的应用程序分解成函数或方法.你应该尽可能多的从你的应用程序的服务器端分开前端的HTML ...

  6. 前端学习笔记——引入css文件、样式优先级

    CSS样式的引用方式有三种:行间样式表>内部样式表>外部样式表. 如果只有一种样式,那么优先级“由内到外 由近到远” 1.行间样式表--内联方式 内联方式指的是直接在 HTML 标签中的  ...

  7. 第一节:mybatis入门

    1.新建数据表 本次测试使用mysql数据,数据库名称为mybatis,新建一张表person,建表语句如下: CREATE TABLE `person` ( `id` ) PRIMARY KEY a ...

  8. Scrapy框架: 登录网站

    一.使用cookies登录网站 import scrapy class LoginSpider(scrapy.Spider): name = 'login' allowed_domains = ['x ...

  9. CentOS MySQL 5.7编译安装

    CentOS MySQL 5.7编译安装 MySQL 5.7 GA版本的发布,也就是说从现在开始5.7已经可以在生产环境中使用,有任何问题官方都将立刻修复. MySQL 5.7主要特性: 更好的性能: ...

  10. HDU 4652 Dice (概率DP)

    版权声明:欢迎关注我的博客,本文为博主[炒饭君]原创文章,未经博主同意不得转载 https://blog.csdn.net/a1061747415/article/details/36685493 D ...