Yonghang: Difference between revisions
imported>Y0ukn0w |
imported>Y0ukn0w |
||
Line 1: | Line 1: | ||
= | = 2010 = | ||
==11/ | == 11/12 == | ||
把重写的FSK调试了一下,总是觉得不该时间这么长 | |||
== 11/11 | == 11/11 == | ||
读数据的接口打算使用fstream,这需要重复读取数据,在写一个简单的测试程序时遇到了不少问题 | 读数据的接口打算使用fstream,这需要重复读取数据,在写一个简单的测试程序时遇到了不少问题 | ||
#include<iostream> | #include<iostream> | ||
Line 115: | Line 67: | ||
写了一个rabin-miller的测试程序,并安装了gmp库,代码就不附在这里了 | 写了一个rabin-miller的测试程序,并安装了gmp库,代码就不附在这里了 | ||
== 11/ | == 11/10 == | ||
11/11 | |||
补:昨天把kaiyuan写的代码看了一遍,修改了一下,把gsl_rng.h的东西用了进去,转为ubuntu下可以运行的版本 | |||
同样的,关于程序运行的次数,我也有疑问,为什么每次的次数感觉远大于两次 | |||
== 11/9 == | |||
今天把ubuntu重新安装了一遍,将分区大小改为了6GB。在重新装的时候遇到了一点问题,可以上网,但update manager无法正常工作,正在国外论坛查找解决方案,不知怎么就突然好了,下次遇到还是没有办法。 | |||
在windows中的文件和ubuntu中的文件互相移动后(通过将磁盘mount的方式),如果再次访问,经常会出现permission denied的情况,不是太建议这么做。 | |||
下面介绍gnu库的基本安装方法 | |||
#从gnu的ftp上下载你所需要的库,以gsl为例 | |||
#将压缩包解压至非mount设备的地方,比如home/y0ukn0w/Documents //y0ukn0w is my username | |||
#cd /home/Documents/gsl-1.14<br /> chmod a+x configure //有时不需要这一句 <br /> ./configure <br /> make <br /> make install | |||
#ps : 可以打开文件夹,找到对应的INSTALL,里面会有说明 | |||
#在连接的时候可能还是会出错。这时,可以选择输入相应的指令;如果你用的是codeblocks,那么,settings->compilers and debugger settings->linker libraries,在这里加入相应的lib | |||
下面介绍gsl/gsl_rng.h的简单使用方法 | |||
代码如下 | |||
#include <stdio.h> | |||
#include <gsl/gsl_rng.h> | |||
#include<time.h> | |||
int | |||
main (void) | |||
{ | |||
const gsl_rng_type * T; | |||
gsl_rng * r; | |||
T = gsl_rng_rand; //可以将其设置为不同的值,以获取不同的随机数,如改为gsl_rng_randu,gsl_rng_knuthran2002,具体参考manul | |||
r = gsl_rng_alloc (T); | |||
int i, n = 10; | |||
gsl_rng_set(r,int(time(NULL))); //设置随机数seed | |||
gsl_rng_env_setup(); | |||
for (i = 0; i < n; i++) | |||
{ | |||
double u = gsl_rng_uniform (r); | |||
printf ("%.5f\n", u); | |||
} | |||
double u = gsl_rng_uniform(r); | |||
printf("%.5f\n",u); | |||
gsl_rng_free (r); | |||
return 0; | |||
} | |||
gsl_rng.h的部分可选用参数如下 | |||
*[[gsl_rng_rand]] | |||
在写需要template的头文件时,为方便调试,往往通过修改头文件的方式来完成。 | |||
现在想来,是自己的接口设计的还不够好。 | |||
现在数据的输入输出打算这样完成: | |||
#一个程序负责生成随机数,将其输入到data.in文件中 | |||
#主程序中有一个函数ReadData,测试程序中打开data.in和data.out,调用ReadData,将数据读入,处理后输出到data.out中。 | |||
--You will when you believe 13:03, 8 November 2010 (UTC) |
Revision as of 05:34, 13 November 2010
2010
11/12
把重写的FSK调试了一下,总是觉得不该时间这么长
11/11
读数据的接口打算使用fstream,这需要重复读取数据,在写一个简单的测试程序时遇到了不少问题
#include<iostream> #include<fstream> #include<string> using namespace std; int main() { ifstream in("data.in"); ofstream out("data.out"); string s; while(in>>s) { out<<s<<' '; } in.seekg(0,ios::beg); out.seekp(0,ios::end); while(in>>s) { out<<s; } in.close(); out.close(); return 0; }
原本应该在data.out中输出两遍data.in的数据,但是实际上只输出了一遍。 也就是说, in.seekg(0,ios::beg);这行没能把读指针指向开头,经过单步调试也未能解决 和大三的学长讨论了很久没有结果
后来在网上搜索,看到一个网页
fstream存在状态: 当被打开第一次以后,状态处于错误状态。 fstream错误状态 fail() , eof() , bad(); failbit , eofbit ,badbit 。 正确状态 good(), good = not(fail or eof or bad)
实际上文件读完的时候fail会自动置为true,所以可以使用clear函数,将fail设置为false.测试代码如下,只取部分
ifstream in("data.in",ios::binary); cout << "isfail " << in.fail() << endl; cout << "isbad " << in.bad() << endl; cout << "iseof " << in.eof() <<endl; cout << "isgood "<< in.good() << endl; in.clear(); cout << "isfail " << in.fail() << endl; cout << "isbad " << in.bad() << endl; cout << "iseof " << in.eof() <<endl; cout << "isgood "<< in.good() << endl;
输出结果为
isfail 1 isbad 0 iseof 1 isgood 0 isfail 0 isbad 0 iseof 0 isgood 1
写了一个rabin-miller的测试程序,并安装了gmp库,代码就不附在这里了
11/10
11/11 补:昨天把kaiyuan写的代码看了一遍,修改了一下,把gsl_rng.h的东西用了进去,转为ubuntu下可以运行的版本 同样的,关于程序运行的次数,我也有疑问,为什么每次的次数感觉远大于两次
11/9
今天把ubuntu重新安装了一遍,将分区大小改为了6GB。在重新装的时候遇到了一点问题,可以上网,但update manager无法正常工作,正在国外论坛查找解决方案,不知怎么就突然好了,下次遇到还是没有办法。 在windows中的文件和ubuntu中的文件互相移动后(通过将磁盘mount的方式),如果再次访问,经常会出现permission denied的情况,不是太建议这么做。 下面介绍gnu库的基本安装方法
- 从gnu的ftp上下载你所需要的库,以gsl为例
- 将压缩包解压至非mount设备的地方,比如home/y0ukn0w/Documents //y0ukn0w is my username
- cd /home/Documents/gsl-1.14
chmod a+x configure //有时不需要这一句
./configure
make
make install - ps : 可以打开文件夹,找到对应的INSTALL,里面会有说明
- 在连接的时候可能还是会出错。这时,可以选择输入相应的指令;如果你用的是codeblocks,那么,settings->compilers and debugger settings->linker libraries,在这里加入相应的lib
下面介绍gsl/gsl_rng.h的简单使用方法 代码如下
#include <stdio.h> #include <gsl/gsl_rng.h> #include<time.h> int main (void) { const gsl_rng_type * T; gsl_rng * r; T = gsl_rng_rand; //可以将其设置为不同的值,以获取不同的随机数,如改为gsl_rng_randu,gsl_rng_knuthran2002,具体参考manul r = gsl_rng_alloc (T); int i, n = 10; gsl_rng_set(r,int(time(NULL))); //设置随机数seed gsl_rng_env_setup(); for (i = 0; i < n; i++) { double u = gsl_rng_uniform (r); printf ("%.5f\n", u); } double u = gsl_rng_uniform(r); printf("%.5f\n",u); gsl_rng_free (r); return 0; }
gsl_rng.h的部分可选用参数如下
在写需要template的头文件时,为方便调试,往往通过修改头文件的方式来完成。 现在想来,是自己的接口设计的还不够好。 现在数据的输入输出打算这样完成:
- 一个程序负责生成随机数,将其输入到data.in文件中
- 主程序中有一个函数ReadData,测试程序中打开data.in和data.out,调用ReadData,将数据读入,处理后输出到data.out中。
--You will when you believe 13:03, 8 November 2010 (UTC)