
编程珠玑
文章平均质量分 75
MemRay
PhD在读,intereted in NLP、Deep Learning及其他AI问题。这里基本是个收藏夹 :D
展开
-
函数要多小才够好——谈小函数之道
“设计良好的函数往往比较小,而过大函数的设计往往一塌糊涂,或者存在很大的优化空间。”也许你认为讨论函数的大小没有必要,原因是函数设计的本质是内聚,它的大小只是它的表现形式。而上面的原因有必要让我们讨论一下函数的大小问题。我对函数的核心思路:我提出代码最小处理单元的概念:一个基本操作(赋值,比较等),一个函数调用(包括调用后判断返回值进行判断)都看成一个最小处理单元。那么,一个函数,最小转载 2013-01-02 00:48:09 · 733 阅读 · 0 评论 -
伪随机数
伪随机数,或称伪乱数,是使用一个确定性的算法计算出来的似乎是随机的数序,因此伪随机数实际上并不随机。在计算伪随机数时假如使用的开始值不变的话,那么伪随机数的数序也不变。伪随机数的随机性可以用它的统计特性来衡量,其主要特征是每个数出现的可能性和它出现时与数序中其它数的关系。伪随机数的优点是它的计算比较简单,而且只使用少数数值很难推算出计算它的算法。一般人们使用一个假的随机数,比如电脑上的时间作为计算转载 2013-05-15 21:33:10 · 5440 阅读 · 0 评论 -
利用RSA算法生成伪随机数【转】
转自:http://www.chncla.com/yk/201006/p_7.html 最近浏览“程序员论坛”时发现不少好帖,增长了不少知识,现拿其中一则为例与大家共同分享心得。 某人提出一个问题:怎样才能生成一亿个不重复的随机数? 问题表述起来很简单,似乎只要弄明白什么叫随机数以及怎样用电脑生成随机数,就能解决问题。 随机数,个人理解为一定范围内出现转载 2013-05-16 01:47:00 · 4248 阅读 · 3 评论 -
计算机程序设计的史诗TAOCP
倘若你去问一个木匠学徒:你需要什么样的工具进行工作,他可能会回答你:“我只要一把锤子和一个锯”。但是如果你去问一个老木工或者是大师级的建筑师,他会告诉你“我需要一些精确的工具”。由于计算机所解决的问题都是从生活中抽象出来的问题,其复杂性不言而喻,所以我们需要这样精确有效的工具去解决现实生活中的复杂问题。算法、数据结构都是程序设计中必不可少的精确工具。算法的重要性是每一个程序员都十分清楚的。转载 2013-05-17 01:19:09 · 1207 阅读 · 0 评论 -
随机数有多随机?
作为一个常识,每个程序员在做入门学习时,都会被老师谆谆教导:我们用的编程语言中的随机函数,只能产生出伪随机数。它有它的内在规律,只能作为对显示世界的随机事件的近似模拟。接下来,我们通常会被传授随机种子的概念。以及用物理上更随机的量做种子。比如系统时间、两次敲击键盘的时间间隔、多次移动鼠标的偏移、甚至系统出错的出错信息码等等。作为游戏数值策划,除了加减乘除,用的最多的数学概念恐怕就是随机数了。有转载 2013-05-16 01:52:49 · 1310 阅读 · 0 评论 -
用线性同余法生成“伪”随机数
线性同余方法(LCG)是个产生伪随机数的方法。它是根据递归公式:其中是产生器设定的常数。LCG的周期最大为,但大部分情况都会少于M。要令LCG达到最大周期,应符合以下条件:互质;的所有质因子的积能整除;若是4的倍数,也是;都比小;是正整数。 线性同余算法有m 、a 、c 和X0 4个参数,通过置Xn + 1 ≡aXn + c (mod m)转载 2013-05-15 21:41:39 · 51283 阅读 · 2 评论 -
函数式编程
转载自:http://coolshell.cn/articles/10822.html当我们说起函数式编程来说,我们会看到如下函数式编程的长相:函数式编程的三大特性:immutable data 不可变数据:像Clojure一样,默认上变量是不可变的,如果你要改变变量,你需要把变量copy出去修改。这样一来,可以让你的程序少很多Bug。因为,程序中的状态不好维护,在并发的时转载 2015-09-25 12:24:35 · 658 阅读 · 0 评论