免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2012 | 回复: 3
打印 上一主题 下一主题

[算法] 关于Hoeffding inequality用C++计算的代码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-05-09 21:07 |只看该作者 |倒序浏览
本帖最后由 luojiafeng1984 于 2016-05-09 21:09 编辑

大家好,我最近在看台大机器学习基石课程,其中有个Hoeffding不等式的公式,我想用C++代码计算一下,发现不对劲。请大家指教。


我对应写的C++代码是:
  1. // Test.cpp : 定义控制台应用程序的入口点。
  2. //

  3. #include "stdafx.h"
  4. #include <math.h>
  5. #include "stdlib.h"
  6. #include <iostream>
  7. using namespace std;

  8. int _tmain(int argc, _TCHAR* argv[])
  9. {
  10.         double errorRate = 0.1;
  11.         for (int i = 1; i < 10; i++)
  12.         {
  13.                 int n = 1000 * i;
  14.                 double fProbably = 2 * exp( -2 * (errorRate * errorRate) * n);
  15.                 cout << "probably rate is:" << fProbably << " when n = " << n << endl;
  16.         }
  17.         system("pause");
  18.         return 0;
  19. }
复制代码
按照课程,n越大,得到的这种概率越小,但我的代码运行起来,结果是:
probability is:4.12231e-009 when n = 1000
probability is:8.49671e-018 when n = 2000
probability is:1.7513e-026 when n = 3000
probability is:3.6097e-035 when n = 4000
probability is:7.44015e-044 when n = 5000
probability is:1.53353e-052 when n = 6000
probability is:3.16084e-061 when n = 7000
probability is:6.51498e-070 when n = 8000
probability is:1.34284e-078 when n = 9000
请按任意键继续. . .

我想的是通过代码计算  2 exp(-2 E2 N)这个值。
类似于e的符号是可接受的错误率,比如说可接受误差10%,那那个值就是 0.1

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
2 [报告]
发表于 2016-05-09 21:34 |只看该作者
看e后面的指数不是越来越小么

论坛徽章:
0
3 [报告]
发表于 2016-05-09 22:35 |只看该作者
回复 2# hellioncu

我还是没看明白,为什么我double类型的,输出居然是带着 e的,可否指点一下,我数学太差了。

   

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
4 [报告]
发表于 2016-05-10 09:28 |只看该作者
luojiafeng1984 发表于 2016-05-09 22:35
回复 2# hellioncu

我还是没看明白,为什么我double类型的,输出居然是带着 e的,可否指点一下,我数学 ...


你的值太小,科学计数法表示比较合适
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP