Jerasure 杂谈(二)

继续折腾Jerasure,接下来就是要解决几个跨平台的问题,因为这套东东是作者在linux下写的和编译的和跑的,所以还是有那么些东西要搞搞的。

以下的改动不分次序,任君喜好:

 

第一个:bezro改成memset,好像在杂谈一已经说了。

 

第二个:在好多个example的例程当中,用到了在linux下的高精度的随机生成函数,srand48,lrand48,等等,反正一看到名字是这些的然后vs又识别不了的,就是了,网上很多其他地方说的什么添加了<stdlib.h>就可以跑了那都是骗人的,因为windows底下就是不支持这些函数的,然后还有一大群文章说什么把srand48用srand替代,用rand替代lrand48之类的,哎呦那些也是骗人的,也不算全骗吧,这些也是生成随机数的没错,但是范围超小的,就0-32***多少的,然后人家的linux下的高精度可靠随机数生成器妥妥的生成48位的随机数然后取前32位作为真正使用(后16位设置成统一的赋值为330E,这里可以查到:http://publib.boulder.ibm.com/infocenter/zvm/v6r1/index.jsp?topic=/com.ibm.zvm.v610.edclv/rsrnd4.htm).

最后还是用一个高大上的库来搞定的——“准”标准的强大的boost库,这个库随便一搜大把教程,主要就是用里面的random的东东来搞,简单说下吧,因为网上说的配置方法看起来好像很多都不错但是很多都挺2的,可能大家最后都成功了吧,但是我觉得我以下叙述的还是挺简单实用的:首先,下载,我在官网下的zip包,最新的1.54吧;然后解压,我是将它解压到平时我vs2010用的那个workspace的文件夹下,这样子比较方便导入和使用;然后用命令行,进入到那个文件夹下,这位朋友的方法还是很简单明了的,推荐,感谢了:http://blog.csdn.net/xzz_hust/article/details/9365511

 

编译一下就ok了,然后就发现可以用了,网上还有很多大神的文章详细分析在编译的过程中发生了什么,哪些该编译哪些该链接什么的,当然这过程有很多东西可以学~有兴趣的话就慢慢找这些文章看吧,然后大婶们会教你如何指定参数啊之类的,因为全部编译会怎样浪费硬盘空间什么的,然后我稍微翻了下,嗯嗯,原来最多也就占我一个多G的硬盘空间,呵呵,我还真不介意,现在一个T的硬盘都多廉价了,何必呢,不过作为学习的话,还是很好的,我就不学了,因为我目的不是这个~

用boost库里面的random.hpp来搞(晕,搞了十分钟没知道为什么老说找不到,原来写成了<boost/random.php>。。。。。。),然后用这个库里面的一堆东东来弄个随机数,官方写法:http://www.boost.org/doc/libs/1_54_0/doc/html/boost_random.html

 

这里主要是用boost::mt19937这个家伙来搞,文档里面说它比较稳定,可靠,快速,我这里写了一个独立的函数,需要一个随机数的话就调用下就可以了,返回一个long,代码如下

static long my_random_long()
{
    static boost::mt19937 gen(static_cast<unsigned int> (std::time(0)));
    boost::random::uniform_int_distribution<> engine(1, INT_MAX);
    boost::variate_generator<boost::mt19937&,boost::random::uniform_int_distribution<> > rng(gen, engine);

    return rng();
}

过程比较累赘,我也没办法,说下吧,三行分别是:第一行定义一个你要用什么生成器,第二行定义你要实现哪种模式的随机分布,第三行就是来一个引擎一样的东西,用你前两个定义的东西作为参数传入初始化,然后就可以了,要注意的一点是:我第一行加的static,不知道为什么,不加的话,我每次生成都会是同样的随机数列,就是第一次是77,3842,2222,3333,第二次也还是77,3842.。。。。

我答案是在stackoverflow上找到的,很多人说了很多方法我试过也是不行的,链接如下:http://stackoverflow.com/questions/2190080/using-boostrandom-and-getting-same-sequence-of-numbers

 

ok,通过以下的种种,算是把一大块东西搞定了,把jerasure_05的example跑了起来,输出效果与官方文档差不多,算是完成了一大部分工作了,下一篇的话应该是要讲讲在搞encoder这个最核心的最常用的example的时候在平台移植方面需要解决什么问题了。

转载于:https://www.cnblogs.com/allen-tung/p/3407736.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值