7.26日算法日记

前言

我意识到小格式与小细节小方法也常常会决定胜败,而且因为这种东西卡住会极大的打击心态,且现在文章没有大致模板的形式不是很好,因此我以后将会令本日学到的小知识点放在前面,然后再写具体的例题和知识点,在记录上还是以知识点为主,如果是单独的题或者说本人没有能力单独提炼出知识点,就把题放在前面。大致是如此格式。

高精随机数

mt19937是在radom包中的一个关键字,是c11中新加入(距离现在都十年多了罢...)的一个特性,利用他生成随机数而不是rand和srand的优点在于高周期于低关联,周期大约可以达到2^{19937}-1的恐怖数字,用来简单描述已知宇宙暂时是没有太大问题的,而srand是我们前面的老朋友LCG(linear congruential generator)线性同余算法,你可能觉得好像是新的,其实:

f(x)=(x+c) mod \ m

不必多言,不懂的可以看前面的rho算法。因此我们不选择使用srand,但为了保证较高的随机性,将srand生成的数字当作mt19937的种子也是常用的做法。srand无法用作蒙特卡洛(Monte Carlo)模拟,加密算法(何止是容易破解,根据鸽笼原理,一个个试都能线性破解掉)

顺便一提,mt19937使用的算法为Mersenne twister算法,而对于硬件玩家,没有超过2kb的空间还是推荐LCG,开支较小并且可迭代。

return 0

在很多编译器中,我们可以省略返回值,但在某些编译器中返回值是不可省略的,如省略会出现段错误,因此请尽量每次都写返回值。

逆元

逆元本来不需要讲解,但经常会搞混ÿ

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值