srand函數(shù)源碼 關(guān)于C語言中rand函數(shù)和srand函數(shù)的用法?
關(guān)于C語言中rand函數(shù)和srand函數(shù)的用法?rand()函數(shù)通常與root srand()函數(shù)一起使用。它們一起產(chǎn)生一個(gè)隨機(jī)數(shù)。通常的格式是:srand((unsigned)time(null))
關(guān)于C語言中rand函數(shù)和srand函數(shù)的用法?
rand()函數(shù)通常與root srand()函數(shù)一起使用。
它們一起產(chǎn)生一個(gè)隨機(jī)數(shù)。通常的格式是:srand((unsigned)time(null))a=rand()%X//a,X,它們都是整數(shù)變量,其中X應(yīng)該在前面賦值。srand函數(shù)中的unsigned也可以替換為其他函數(shù)。例如:int和其他數(shù)據(jù)類型,但結(jié)果會(huì)相應(yīng)地更改。用rand函數(shù)生成隨機(jī)數(shù)后,使用%X限制其范圍。也就是說:0<=a
~],哈哈,這是我遇到的問題,我做了一些研究。實(shí)際上,這是因?yàn)閟rand()函數(shù)是一個(gè)隨機(jī)數(shù)生成函數(shù),這意味著C語言中的隨機(jī)數(shù)是由它控制的
!如果在應(yīng)用srand()函數(shù)之前使用隨機(jī)函數(shù)rand(),則相當(dāng)于使用srand(1)
并將語句srand((unsigned)time(null))放入for循環(huán),即使用srand((unsigned)time(0))。因此,如果此語句不更改,則生成的隨機(jī)數(shù)不會(huì)更改
!如果你不明白,你可以問我
C語言中srand隨機(jī)函數(shù)怎么用?知道?
根是C標(biāo)準(zhǔn)庫函數(shù)的隨機(jī)數(shù)是一個(gè)偽隨機(jī)數(shù),這是一個(gè)固定序列。所謂隨機(jī)數(shù)種子,就是從序列中指定起始位置,依次取下列值作為隨機(jī)數(shù)。這個(gè)算法每次都給出相同的隨機(jī)數(shù)。這可以驗(yàn)證無論何時(shí)運(yùn)行程序,固定種子都是相同的結(jié)果。
為了模擬真實(shí)的隨機(jī)數(shù),關(guān)鍵是起始位置是隨機(jī)的。這種種子,在實(shí)踐中,通常需要當(dāng)時(shí)的時(shí)間,因?yàn)槊颗_(tái)電腦或每次隨機(jī)得到的數(shù)字往往是不一致的。只要存在差異,起始位置不同,隨機(jī)數(shù)序列就會(huì)不同。還有其他生成器,這取決于程序員。例如,可以使用一些隨機(jī)參數(shù)、擊鍵、打印字符等。各種組合都是隨機(jī)的。
如何理解C語言中的srand()函數(shù)中的隨機(jī)數(shù)發(fā)生器的種子?
完全不同。。。。Rand()是一個(gè)隨機(jī)函數(shù),srand()是一個(gè)隨機(jī)種子函數(shù)。沒有真正的隨機(jī)數(shù)來確定rand()的隨機(jī)值。如果沒有srand(),rand()的值每次都相同
rand()生成一個(gè)介于0和32767之間的偽隨機(jī)數(shù)。Srand(unsignedt)是rand()的下一個(gè)“種子”。所謂“種子”,就是給偽隨機(jī)發(fā)生器賦一個(gè)初始值,因?yàn)槿绻跏贾迪嗤院笊傻膫坞S機(jī)數(shù)的規(guī)律是相同的,這就不能達(dá)到“隨機(jī)”的目的。因此,srand(unsigned T)在計(jì)算機(jī)中通常是以實(shí)時(shí)時(shí)間開始的,因?yàn)閷?shí)時(shí)時(shí)間的值是不斷變化的,所以start rand()函數(shù)生成的偽隨機(jī)數(shù)序列可以達(dá)到混淆真假的效果。