新聞中心
C++庫函數(shù)作為一個高效的.NET程序語言。其混合了函數(shù)語言和物件導向程序編制語言,并且***的適用于編程、算法、技術和探索性開發(fā),因此可以在使用的過程當中感受到趣味性和吸引力。

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于網(wǎng)站設計、成都網(wǎng)站制作、茄子河網(wǎng)絡推廣、小程序設計、茄子河網(wǎng)絡營銷、茄子河企業(yè)策劃、茄子河品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學生創(chuàng)業(yè)者提供茄子河建站搭建服務,24小時服務熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
rand()產(chǎn)生“偽隨機數(shù)”的原理是:給定數(shù)x(如果調(diào)用者未指定,則使用默認值),通過固定的計算公式1返回一個數(shù)y,這個數(shù)y就是所謂的偽隨機數(shù);同時通過固定的計算公式2,修改x,這樣下次調(diào)用rand()時就會得到一個新的y。通過上面這兩步,反復調(diào)用rand()會得到一個所謂的“偽隨機數(shù)”的序列。
因為兩個計算公式是固定的,所以只要X1相同,那么產(chǎn)生的序列就相同。X1成為種子,seed。
如果調(diào)用者不指定種子,C++語言的rand()會使用默認值。設置種子使用srand(unsigned int)函數(shù),這個函數(shù)的名字的***個字母s就是seed的意思。
因為時間的唯一性和一維性,所以可以用系統(tǒng)時間來作為種子。這樣可以保證每次運行時,rand()產(chǎn)生的序列都是不同的。在使用rand()前,以如下方式設置種子即可,
srand((unsigned int) time(0));
下面是《C Programming Language》中給出的rand()和srand()的一種實現(xiàn),可能是早期C++的庫函數(shù)的實現(xiàn)。
- int rand(void) {
- nextnext = next * 1103515245 + 12345; //修改next的值
- return (unsigned int) (next/65536) % 32768; //得到偽隨機數(shù)在0~32768之間
- }
- void srand(unsigned int seed) {
- next = seed; //設置種子
- }
也就是說,隨便你拿起哪本C++書籍(包括很多被人們廣泛稱為“必讀經(jīng)典”的),那么有很大的可能這本書中的內(nèi)容不是你應該學的,而是你不應該學的。我之所以這么說有兩個原因,因為一,我曾經(jīng)是受害者。二,也是更實質(zhì)性的原因,這些所謂的必讀經(jīng)典。
充斥的是介紹C++中的陷阱和對于C++庫函數(shù)的缺陷的各種workarounds(好聽一點叫Idioms(慣用法)或techniques(技術));又因為C++中的這類陷阱和缺陷實在數(shù)不勝數(shù),所以就拉出了一個“長尾”;這類書籍在所有語言中都存在(“C缺陷和陷阱”、“Effective Java”、“Effective C#”等等)。#t#
然而在C++庫函數(shù)里面這個尾巴特別長,導致這類書數(shù)不勝數(shù)。三,這些書中列出來的缺陷和陷阱根本不區(qū)分常見程度,對于一個用本程序員來說,應該希望看到“從最常見的問題到最不常見的問題”這樣的順序來羅列內(nèi)容,然而這些書里面要么全部混在一起。
要么按照“資源管理、類設計、泛型”這樣的技術分類來介紹內(nèi)容,這根本毫無幫助(如果我看到一個章節(jié)的內(nèi)容,我當然知道它講的是類設計還是資源管理,還用廢話么?),使得一個學習者無法辨別并將最重要的時間花在最常見的問題之上。
文章題目:對C++庫函數(shù)進行學習探索總結筆記
標題鏈接:http://www.dlmjj.cn/article/coocodh.html


咨詢
建站咨詢
