C++库函数作为一个高效的.NET程序语言。其混合了函数语言和物件导向程序编制语言,并且***的适用于编程、算法、技术和探索性开发,因此可以在使用的过程当中感受到趣味性和吸引力。
创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于网站设计、成都网站制作、茄子河网络推广、小程序设计、茄子河网络营销、茄子河企业策划、茄子河品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联建站为所有大学生创业者提供茄子河建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com
rand()产生“伪随机数”的原理是:给定数x(如果调用者未指定,则使用默认值),通过固定的计算公式1返回一个数y,这个数y就是所谓的伪随机数;同时通过固定的计算公式2,修改x,这样下次调用rand()时就会得到一个新的y。通过上面这两步,反复调用rand()会得到一个所谓的“伪随机数”的序列。
因为两个计算公式是固定的,所以只要X1相同,那么产生的序列就相同。X1成为种子,seed。
如果调用者不指定种子,C++语言的rand()会使用默认值。设置种子使用srand(unsigned int)函数,这个函数的名字的***个字母s就是seed的意思。
因为时间的唯一性和一维性,所以可以用系统时间来作为种子。这样可以保证每次运行时,rand()产生的序列都是不同的。在使用rand()前,以如下方式设置种子即可,
srand((unsigned int) time(0));
下面是《C Programming Language》中给出的rand()和srand()的一种实现,可能是早期C++的库函数的实现。
- int rand(void) {
- nextnext = next * 1103515245 + 12345; //修改next的值
- return (unsigned int) (next/65536) % 32768; //得到伪随机数在0~32768之间
- }
- void srand(unsigned int seed) {
- next = seed; //设置种子
- }
也就是说,随便你拿起哪本C++书籍(包括很多被人们广泛称为“必读经典”的),那么有很大的可能这本书中的内容不是你应该学的,而是你不应该学的。我之所以这么说有两个原因,因为一,我曾经是受害者。二,也是更实质性的原因,这些所谓的必读经典。
充斥的是介绍C++中的陷阱和对于C++库函数的缺陷的各种workarounds(好听一点叫Idioms(惯用法)或techniques(技术));又因为C++中的这类陷阱和缺陷实在数不胜数,所以就拉出了一个“长尾”;这类书籍在所有语言中都存在(“C缺陷和陷阱”、“Effective Java”、“Effective C#”等等)。#t#
然而在C++库函数里面这个尾巴特别长,导致这类书数不胜数。三,这些书中列出来的缺陷和陷阱根本不区分常见程度,对于一个用本程序员来说,应该希望看到“从最常见的问题到最不常见的问题”这样的顺序来罗列内容,然而这些书里面要么全部混在一起。
要么按照“资源管理、类设计、泛型”这样的技术分类来介绍内容,这根本毫无帮助(如果我看到一个章节的内容,我当然知道它讲的是类设计还是资源管理,还用废话么?),使得一个学习者无法辨别并将最重要的时间花在最常见的问题之上。
网站标题:对C++库函数进行学习探索总结笔记
文章分享:http://www.shufengxianlan.com/qtweb/news15/36565.html
成都网站建设公司_创新互联,为您提供自适应网站、品牌网站设计、商城网站、小程序开发、用户体验、全网营销推广
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联