如何產(chǎn)生真正的隨機(jī)函數(shù)?
更新時(shí)間:2007年03月08日 00:00:00 作者:
//MSDN
Randomize
為了生成某個(gè)范圍內(nèi)的隨機(jī)整數(shù),可使用以下公式:Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
這里,upperbound 是隨機(jī)數(shù)范圍的上限,而 lowerbound 則是隨機(jī)數(shù)范圍的下限。
---- 在VB中的隨機(jī)函數(shù)是Rnd,但在使用的過(guò)程中發(fā)現(xiàn),雖然程序啟動(dòng)后產(chǎn)生的數(shù)值是隨機(jī)的,但對(duì)于每次重新啟動(dòng),程序都會(huì)產(chǎn)生相同的隨機(jī)數(shù)序列,應(yīng)該怎樣解決?
----VB中隨機(jī)函數(shù)的原形是: Rnd(number),Rnd函數(shù)返回小于1但大于或等于0的值。number (可選項(xiàng))的值決定了Rnd生成隨機(jī)數(shù)的方式。由于生成隨機(jī)數(shù)方式的確定,導(dǎo)致了每次新啟動(dòng)隨機(jī)函數(shù),最初給定的種子都會(huì)生成相同的數(shù)列,因?yàn)槊恳淮握{(diào)用Rnd函數(shù)都用數(shù)列中的前一個(gè)數(shù)作為下一個(gè)數(shù)的種子。
----為了每次運(yùn)行程序調(diào)用隨機(jī)函數(shù)都會(huì)有不同的隨機(jī)數(shù)序列,在調(diào)用Rnd之前,先使用無(wú)參數(shù)的Randomize語(yǔ)句初始化隨機(jī)數(shù)生成器,該生成器具有根據(jù)系統(tǒng)計(jì)時(shí)器得到的種子,這樣再調(diào)用Rnd就會(huì)得到不同的隨機(jī)數(shù)序列了。
----另外,根據(jù)Randomize的工作原理,用戶(hù)也可以編制自己的隨機(jī)函數(shù),即利用函數(shù)Timer得到從午夜開(kāi)始到現(xiàn)在經(jīng)過(guò)的秒數(shù),然后再根據(jù)要得到的隨機(jī)數(shù)值大小對(duì)該數(shù)值進(jìn)行“衰減”處理,這樣得到的數(shù)值則可稱(chēng)得上是真正意義的隨機(jī)數(shù)值。
Randomize
為了生成某個(gè)范圍內(nèi)的隨機(jī)整數(shù),可使用以下公式:Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
這里,upperbound 是隨機(jī)數(shù)范圍的上限,而 lowerbound 則是隨機(jī)數(shù)范圍的下限。
---- 在VB中的隨機(jī)函數(shù)是Rnd,但在使用的過(guò)程中發(fā)現(xiàn),雖然程序啟動(dòng)后產(chǎn)生的數(shù)值是隨機(jī)的,但對(duì)于每次重新啟動(dòng),程序都會(huì)產(chǎn)生相同的隨機(jī)數(shù)序列,應(yīng)該怎樣解決?
----VB中隨機(jī)函數(shù)的原形是: Rnd(number),Rnd函數(shù)返回小于1但大于或等于0的值。number (可選項(xiàng))的值決定了Rnd生成隨機(jī)數(shù)的方式。由于生成隨機(jī)數(shù)方式的確定,導(dǎo)致了每次新啟動(dòng)隨機(jī)函數(shù),最初給定的種子都會(huì)生成相同的數(shù)列,因?yàn)槊恳淮握{(diào)用Rnd函數(shù)都用數(shù)列中的前一個(gè)數(shù)作為下一個(gè)數(shù)的種子。
----為了每次運(yùn)行程序調(diào)用隨機(jī)函數(shù)都會(huì)有不同的隨機(jī)數(shù)序列,在調(diào)用Rnd之前,先使用無(wú)參數(shù)的Randomize語(yǔ)句初始化隨機(jī)數(shù)生成器,該生成器具有根據(jù)系統(tǒng)計(jì)時(shí)器得到的種子,這樣再調(diào)用Rnd就會(huì)得到不同的隨機(jī)數(shù)序列了。
----另外,根據(jù)Randomize的工作原理,用戶(hù)也可以編制自己的隨機(jī)函數(shù),即利用函數(shù)Timer得到從午夜開(kāi)始到現(xiàn)在經(jīng)過(guò)的秒數(shù),然后再根據(jù)要得到的隨機(jī)數(shù)值大小對(duì)該數(shù)值進(jìn)行“衰減”處理,這樣得到的數(shù)值則可稱(chēng)得上是真正意義的隨機(jī)數(shù)值。
您可能感興趣的文章:
- sql server中隨機(jī)函數(shù)NewID()和Rand()
- python中隨機(jī)函數(shù)random用法實(shí)例
- php中隨機(jī)函數(shù)mt_rand()與rand()性能對(duì)比分析
- perl寫(xiě)的一個(gè)隨機(jī)編故事的程序(rand隨機(jī)函數(shù))
- Oracle隨機(jī)函數(shù)之dbms_random使用詳解
- php數(shù)組函數(shù)序列 之shuffle()和array_rand() 隨機(jī)函數(shù)使用介紹
- 如何利用當(dāng)前時(shí)間生成隨機(jī)函數(shù)?
- 詳解C語(yǔ)言中rand函數(shù)的使用
相關(guān)文章
VB使用ADO操作Access數(shù)據(jù)庫(kù)
這篇文章主要介紹了VB使用ADO操作Access數(shù)據(jù)庫(kù)的相關(guān)資料,需要的朋友可以參考下2015-06-06VB實(shí)現(xiàn)的倒計(jì)時(shí)類(lèi)代碼詳解
這篇文章主要介紹了VB實(shí)現(xiàn)的倒計(jì)時(shí)類(lèi)代碼,非常實(shí)用的功能,需要的朋友可以參考下2014-07-07VB實(shí)現(xiàn)的《QQ美女找茬游戲》作弊器實(shí)例
這篇文章主要介紹了VB實(shí)現(xiàn)的《QQ美女找茬游戲》作弊器,以一個(gè)完整實(shí)例形式分析了VB實(shí)現(xiàn)《QQ美女找茬游戲》作弊器的相關(guān)技巧,需要的朋友可以參考下2015-06-06VB實(shí)現(xiàn)的16位和32位md5加密代碼分享
這篇文章主要介紹了VB實(shí)現(xiàn)的16位和32位md5加密代碼分享,需要的朋友可以參考下2014-07-07VB語(yǔ)言使用ADO連接、操作SQLServer數(shù)據(jù)庫(kù)教程
這篇文章主要介紹了VB語(yǔ)言使用ADO連接、操作SQLServer數(shù)據(jù)庫(kù)教程,本文講解詳細(xì)、代碼中有大量注釋,是非常好的一篇教程,需要的朋友可以參考下2014-08-08