隨機(jī)生成指定范圍的日期 世界上真的有隨機(jī)數(shù)存在么?
世界上真的有隨機(jī)數(shù)存在么?從軟件的角度來(lái)說(shuō),如果是電腦占卜,需要用隨機(jī)數(shù),電腦里的隨機(jī)數(shù)是假隨機(jī)數(shù)。經(jīng)過(guò)這么多年的編程,我還沒(méi)有 我沒(méi)見(jiàn)過(guò)任何能產(chǎn)生真隨機(jī)數(shù)的東西。但是隨機(jī)數(shù)可以通過(guò)光子糾纏產(chǎn)生。根據(jù)
世界上真的有隨機(jī)數(shù)存在么?
從軟件的角度來(lái)說(shuō),如果是電腦占卜,需要用隨機(jī)數(shù),電腦里的隨機(jī)數(shù)是假隨機(jī)數(shù)。經(jīng)過(guò)這么多年的編程,我還沒(méi)有 我沒(méi)見(jiàn)過(guò)任何能產(chǎn)生真隨機(jī)數(shù)的東西。
但是隨機(jī)數(shù)可以通過(guò)光子糾纏產(chǎn)生。
根據(jù)現(xiàn)代科學(xué)的定義,產(chǎn)生真隨機(jī)數(shù)至少有兩個(gè)條件:
1.真隨機(jī)數(shù)序列是不可預(yù)測(cè)的,不可能重復(fù)生成兩個(gè)相同的真隨機(jī)數(shù)序列。
2.真正的隨機(jī)數(shù)只能由一些隨機(jī)的物理過(guò)程產(chǎn)生。比如:放射性衰變、電子設(shè)備的熱噪聲、宇宙射線(xiàn)的觸發(fā)時(shí)間等。
在計(jì)算機(jī)中,為了滿(mǎn)足信息熵的特性,經(jīng)常使用信息源,包括用戶(hù)和信息源人的反應(yīng)或者一系列排列變形后的高頻時(shí)鐘,或者用戶(hù)路徑的坐標(biāo) 的鼠標(biāo)移動(dòng),這在一般程序中很少觸及,在我看來(lái)。因此,計(jì)算機(jī)上的占卜聚會(huì)讓 我們不談如何處理真隨機(jī)數(shù),以及如何在獲得真隨機(jī)數(shù)時(shí)改變它們。再深入一點(diǎn),就需要講世界的本質(zhì)之類(lèi)的哲學(xué)命題,暫且不提。就現(xiàn)在的占卜程序主要是線(xiàn)上來(lái)說(shuō),和時(shí)間相關(guān)的占卜可能還是可以商量的。但不適合隨機(jī)性要求強(qiáng)的占卜。
1.如何產(chǎn)生一定范圍內(nèi)的隨機(jī)數(shù)?
直接的方法是:
rand() % N
返回一個(gè)從0到N-1的數(shù)字。但是這種方法不好,因?yàn)楹芏嚯S機(jī)數(shù)生成器的低階位都不是隨機(jī)的。更好的方法是:
(int)((double)RAND()/((double)RAND _ MAX 1)* N)
如果你不 t想用替身,另一種是:
RAND()/(RAND _ MAX/N ^ 1)
兩種方法都需要知道RAND_MAX,并且假設(shè)n比RAND_MAX小很多。ANSI規(guī)定標(biāo)準(zhǔn)頭文件stdlib.h包含RAND_MAX的#define。對(duì)了,RAND_MAX是一個(gè)常數(shù),它告訴你C庫(kù)函數(shù)rand()的固定范圍。你可以 不要將RAND_MAX設(shè)置為其他值,您可以 t要求rand()返回其他范圍內(nèi)的值。如果您使用的隨機(jī)數(shù)生成器返回0到1的浮點(diǎn)數(shù)。值,要得到0到N-1范圍內(nèi)的整數(shù),只需將隨機(jī)數(shù)乘以N。
2.為什么每次執(zhí)行程序時(shí)rand()都以相同的順序返回?cái)?shù)字?
可以調(diào)用srand()來(lái)初始化偽隨機(jī)數(shù)生成器的種子。傳遞給srand()的值應(yīng)該是一個(gè)實(shí)隨機(jī)數(shù),比如當(dāng)前時(shí)間:
#包含ltstdlib.hgt
#包含lttime.hgt
srand((unsigned int)time((time _ t *)NULL))
請(qǐng)注意,在程序執(zhí)行過(guò)程中多次調(diào)用srand()并不一定有幫助!唐 每次調(diào)用rand()之前,不要調(diào)用srand()來(lái)獲取a "真隨機(jī)數(shù) "!
我需要隨機(jī)的真/假值,所以我直接使用rand()% 2,但是我得到的是交替的0,1,0,1,0。
這是一個(gè)很差的偽隨機(jī)數(shù)發(fā)生器,低位不隨機(jī)!不幸的是,一些系統(tǒng)提供了這樣的偽隨機(jī)數(shù)發(fā)生器。請(qǐng)盡量使用高階位,詳見(jiàn)本文第1點(diǎn)。
如何在excel表格中隨機(jī)生成指定范圍內(nèi)的一組數(shù)據(jù)?
利用excel隨機(jī)函數(shù)實(shí)現(xiàn)一定范圍內(nèi)數(shù)據(jù)的隨機(jī)變化。
1.打開(kāi)excel程序,在任意單元格中輸入公式RAND()*(100-10) 10,excel會(huì)生成一個(gè)10-100隨機(jī)數(shù)。其中所述rand函數(shù)生成大于0且小于1的隨機(jī)數(shù)。
2.如果想要某個(gè)區(qū)間的隨機(jī)整數(shù),可以用RANDBETWEEN函數(shù)來(lái)實(shí)現(xiàn)。在任意單元格中輸入公式RANDBETWEEN(10,100)將生成一個(gè)介于10和100之間的隨機(jī)整數(shù),其中第一個(gè)參數(shù)是要返回的最小整數(shù)。Number,第二個(gè)參數(shù)是要返回的最大整數(shù),兩個(gè)參數(shù)缺一不可。