c語言srand((unsigned)time(null));是什么意思
C語言中srandtime)用于初始化隨機(jī)數(shù)生成器的種子。
以下是對該表達(dá)式的
1. srand函數(shù):是C語言中的一個(gè)函數(shù),用于設(shè)置隨機(jī)數(shù)生成器的種子。種子是一個(gè)初始值,用于生成一系列的隨機(jī)數(shù)。每次調(diào)用srand時(shí),都會使用提供的種子值來初始化隨機(jī)數(shù)生成器。如果兩次調(diào)用srand時(shí)使用了相同的種子,那么生成的隨機(jī)數(shù)序列也會相同。因此,為了得到不同的隨機(jī)數(shù)序列,我們需要為srand提供一個(gè)變化的種子值。
2. time:這是獲取當(dāng)前時(shí)間的方法。time函數(shù)返回一個(gè)表示從某個(gè)時(shí)間點(diǎn)開始到現(xiàn)在的秒數(shù)的整數(shù)值。通常返回的是自紀(jì)元至今的秒數(shù),以長整型數(shù)形式返回結(jié)果。因?yàn)樵撝悼赡軙^一般整數(shù)的大小,所以用unsigned來保證結(jié)果的正確表示范圍。重要的是這個(gè)值是動態(tài)的,會隨時(shí)間不斷變化,這使得它可以作為一個(gè)好的隨機(jī)數(shù)種子源。將其傳遞給srand可以保證每次程序運(yùn)行時(shí)都獲得不同的隨機(jī)數(shù)序列。這是因?yàn)槊看纬绦騿訒r(shí)都會基于不同的時(shí)間作為種子來初始化隨機(jī)數(shù)生成器。通過這種方式,我們可以確保每次運(yùn)行程序時(shí)都能得到不同的隨機(jī)數(shù)序列。這種機(jī)制特別適用于需要模擬、測試和模擬實(shí)驗(yàn)場景的應(yīng)用中,以確保結(jié)果的隨機(jī)性和不確定性。但在某些對安全性要求極高的場合中,建議使用更為復(fù)雜和安全的隨機(jī)數(shù)生成方法。
c語言srand()和time問題
這里的gettime獲取當(dāng)前的系統(tǒng)時(shí)間,存儲到結(jié)構(gòu)體sysTime中 srand使用種子參數(shù)初始化隨機(jī)數(shù)函數(shù),因?yàn)槿绻挥梅N子初始化隨機(jī)數(shù)生成函數(shù)(rand),那么不斷調(diào)用rand產(chǎn)生的隨機(jī)數(shù)序列會固定不變,你可以試試 這里使用的是當(dāng)前的系統(tǒng)時(shí)間作為隨機(jī)數(shù)種子,其實(shí)這里的代碼有些繁瑣,只用秒就可以了,因?yàn)镃庫里的隨...
C語言編程題(設(shè)計(jì)一個(gè)猜數(shù)字的小游戲)滿意再加200分!!!
srand( (unsigned)time( NULL ) ); \/\/隨機(jī)數(shù)種子設(shè)置 while(i==0) { i=rand(); \/\/這樣做就是為了增加隨機(jī)性 i=i%100; }L: for(int j=0;j<i;j++) { a=a+rand(); \/\/判斷隨機(jī)數(shù)是否是四位數(shù) 如果不是繼續(xù)取數(shù) } a=(a\/i+rand())%10000; if(a<1000)goto L; return(a);}int tish...
四則運(yùn)算。隨機(jī)生成2個(gè)800以內(nèi)的正整數(shù)或零,隨機(jī)計(jì)算+、-、*或\/,答案...
memset(&ti,0,sizeof(ti));srand(time(0));\/\/產(chǎn)生隨機(jī)數(shù) total =0; \/\/初始化 總數(shù) while(i<50)\/\/控制算式數(shù)目為50個(gè) { a=rand()%800;b=rand()%800;\/\/產(chǎn)生兩個(gè)800以內(nèi)的隨機(jī)數(shù) c=rand()%4;\/\/產(chǎn)生4以內(nèi)的隨機(jī)數(shù)來代替四則運(yùn)算符號 switch(c){ case 0:if(a+b<800)\/\/限定范...
C語言中怎樣寫一個(gè)生成隨機(jī)數(shù)的函數(shù)? (不用系統(tǒng)自帶的隨機(jī)函數(shù))
可以試用gettime這個(gè)函數(shù):long int MyRand(int x){ struct time t1,t2,t3;gettime(&t1);int y1=t1.ti_hund;\/\/取1\/100s作為基數(shù) gettime(&t2);int y2=t2.ti_hund;\/\/取1\/100s作為基數(shù) gettime(&t3);int y3=t3.ti_hund;\/\/取1\/100s作為基數(shù) return y1*y2*y3;\/\/產(chǎn)生的隨機(jī)數(shù)...
...程序功能要求:利用隨機(jī)函數(shù)random()生成1---n之間的一個(gè)整數(shù),輸入數(shù)...
srand( (unsigned)time( NULL ) ); \/\/隨機(jī)數(shù)種子設(shè)置while(i==0){i=rand(); \/\/這樣做就是為了增加隨機(jī)性i=i%100;}L: for(int j=0;j<i;j++){a=a+rand(); \/\/判斷隨機(jī)數(shù)是否是四位數(shù) 如果不是繼續(xù)取數(shù)}a=(a\/i+rand())%10000;if(a<1000)goto L;return(a);}int tishi(int aa) \/\/...
一個(gè)取隨機(jī)數(shù)的問題!從1,2,3,4中抽取數(shù)字!用什么編程語言無所謂!
unsigned seed;gettime(&stime);seed=stime.ti_hund*stime.ti_min*stime.ti_hour;srand(seed);N=100;p4=0.25;count=17;for(i=0;i<N;i++){ x=rand();x=x\/32768;dp=(1-p4)\/3;if (x>=0 && x<=p4) a[i]=4;if (x>p4 && x<=p4+dp) a[i]=3;if (x>p4+dp && x...
可以幫我翻譯一下下面的keil代碼嗎?大部分已有解釋,英文的話,可以自己...
T1=1; \/*TI:設(shè)置T1發(fā)送第一個(gè)字符給串口*\/ endif } void main(){ \/\/unsigned char tmp_t,tmp_i;\/\/zhu unsigned int i,j;init();while(1){ while(k) \/\/外部中斷0觸發(fā)循環(huán) { k=0;P3=0xff;srand(TL0);i=TL0%8;j=TL0%8;printf("rand=%d %d\\n",i,j);} } } void inter0...
單片機(jī) 51 隨機(jī)數(shù)輸出0到100
把 num=rand();num=num-32667;這兩句改成 num=rand()%101;不過單片機(jī)內(nèi)如果沒有時(shí)鐘做srand種子的話,雖然是隨機(jī),但是單片機(jī)重啟后出現(xiàn)的隨機(jī)數(shù)和上次重啟出現(xiàn)的隨機(jī)數(shù)是一樣的,不是真正意義上的隨機(jī)數(shù)
C51 rand()函數(shù)
沒有調(diào)用srand()時(shí), 默認(rèn)調(diào)用srand(1)
用C語言實(shí)現(xiàn)瑞利分布,萊斯分布,高斯分布的分布函數(shù)
seed=stime.ti_hund*stime.ti_min*stime.ti_hour; srand(seed); for(i=0;i<num;i++) { x[i]=rand(); x[i]=x[i]\/32768; }}void randr(float *x,int num){ float x1[MAX_N]; int i; struct time stime; unsigned seed; gettime(&stime); seed=stime.ti_hund*stime.ti_min*stime....
相關(guān)評說:
光澤縣復(fù)合: ______ 確實(shí)是時(shí)間太短,srand( (unsigned)time( NULL ) )就是用時(shí)間來播種,而這個(gè)函數(shù)在同一秒內(nèi)播的種是完全一樣的.每一次srand都會重新播種,都會從第一個(gè)隨機(jī)數(shù)開始,所以這里的結(jié)果是一樣的. 而播種時(shí)切記不要這么寫(我這樣寫吃過很大虧,調(diào)了半天才發(fā)現(xiàn)),一個(gè)程序里播一次種就足夠了,所以一般習(xí)慣main里面第一句就是srand 放在for語句前,先播種.而第一個(gè)種子和第二個(gè)是不一樣的,所以即使不到一秒也沒問題.
光澤縣復(fù)合: ______ srand()函數(shù)設(shè)置種子 一般用srand((unsigned)time(NULL));
光澤縣復(fù)合: ______ srand是用來設(shè)置隨機(jī)時(shí)間的種子,一般與rand()結(jié)合使用.否則直接用rand()的話,每次運(yùn)行程序的結(jié)果都相同. 原型:int srand (unsigned int seed); srand((unsigned) time(&t));此句的參數(shù)使用time()函數(shù)獲得系統(tǒng)時(shí)間作為種子,并且把獲得的時(shí)間強(qiáng)制轉(zhuǎn)換為unsigned.
光澤縣復(fù)合: ______ 請使用C庫函數(shù)srand()來設(shè)定隨機(jī)數(shù)種子,其原型為: void srand( unsigned int seed ); 其中seed就是設(shè)定的隨機(jī)數(shù)種子.
光澤縣復(fù)合: ______ #include <stdio.h>#include <stdlib.h>#include <time.h> void main() { int i,j; int x[10]; int v = 50,n=10; srand((unsigned)time(NULL)); x[0] = rand() % v +1; for (i=0;i<n;i++) { Lab: x[i] = rand() % v +1; for (j=0;j<i;j++) { if (x[i] == x[j]) goto Lab;} // 比較一下,相同數(shù)則不要它,返回再取 } for(i=0;i<n;i++) printf("%2d\n",x[i]); }
光澤縣復(fù)合: ______ rand(產(chǎn)生隨機(jī)數(shù)) 相關(guān)函數(shù) srand 表頭文件 #include 定義函數(shù) int rand(void) 函數(shù)說明 rand()會返回一隨機(jī)數(shù)值,范圍在0至RAND_MAX 間.在調(diào)用此函數(shù)產(chǎn)生隨機(jī)數(shù)前,必須先利用srand()設(shè)好隨機(jī)數(shù)種子,如果未設(shè)隨機(jī)數(shù)種子,rand...
光澤縣復(fù)合: ______ INT函數(shù)~ INT(expnN) 返回expnN的整數(shù)部分
光澤縣復(fù)合: ______ 放在哪里都不會錯(cuò),但放在while循環(huán)里通常達(dá)不到目的.因?yàn)檠h(huán)執(zhí)行很快,每次都寫種子會由于系統(tǒng)時(shí)鐘還未更新(系統(tǒng)時(shí)鐘的更新周期相對較長)而寫入的是同一個(gè)種子,這就會使產(chǎn)生的偽隨機(jī)序列成為一樣的結(jié)構(gòu),達(dá)不到以假亂真的效果了……所以一般在需要產(chǎn)生偽隨機(jī)序列的代碼中在合適的地方用一次種子設(shè)置就可以了!
光澤縣復(fù)合: ______ 我們知道在產(chǎn)生隨機(jī)數(shù)的時(shí)候,需要一個(gè)叫做種子seed的值作為產(chǎn)生隨機(jī)數(shù)算法的初始值. 而C/C++庫中的srand就是為這一次的隨機(jī)數(shù)生成設(shè)置種子.s代表的就是seed的意思. time_t time(time_t *time);該函數(shù)返回自計(jì)算機(jī)計(jì)時(shí)的某個(gè)時(shí)刻...
光澤縣復(fù)合: ______ 以時(shí)間為種子,其實(shí)再產(chǎn)生隨機(jī)數(shù)的函數(shù)中都會加,這樣可以使得取得隨機(jī)數(shù)更有代表性,否則取出來的數(shù)可能是服從正態(tài)分布的! 一句標(biāo)準(zhǔn)格式而已,需要記的!