當前位置:首頁 » 編程語言 » c語言隨機數函數

c語言隨機數函數

發布時間: 2022-02-05 19:14:05

c語言 隨機函數

i++;是i=i+1;的縮寫,c++之所以後面有++,就是因為有這樣的縮寫。
rand()是個函數,每次調用會給你返回一個unsigned int數,即無符號整數,具體這個函數可以網路rand(),返回的數用偽隨機演算法,在你看起來是隨機變化的,范圍在0~4294967295之間
%是c++的整數運算符,如果寫a%b就是求a除以b以後的余數
rand()生成的數大於0~100之間的范圍,rand()%100就會生成在0~99之間的隨機整數
由於題目要求生成1~100之間的整數,所以用表達式rand()%100+1
如果想生成[0~3000)的隨機數可以用表達式rand()%3000
如果想生成[a,b]范圍的隨機數,可以用表達式rand()%(b-a+1)+a來生成
比如要生成10~20之間的隨機數,包含10和20在內,那麼表達式是rand()%(20-10+1)+10

② C語言中獲得隨機數的方法

問題1: 怎樣獲得一個真正的隨機數?要知道,rand()是不能產生真正的隨機數的!即使不能產生真正的隨機數,也要大概接近呀!而rand()好象每次的隨機都一樣。

專家解答:

之所以rand()每次的隨機數都一樣是因為rand()函數使用不正確。各種編程語言返回的隨機數(確切地說是偽隨機數)實際上都是根據遞推公式計算的一組數值,當序列足夠長,這組數值近似滿足均勻分布。如果計算偽隨機序列的初始數值(稱為種子)相同,則計算出來的偽隨機序列就是完全相同的。這個特性被有的軟體利用於加密和解密。加密時,可以用某個種子數生成一個偽隨機序列並對數據進行處理;解密時,再利用種子數生成一個偽隨機序列並對加密數據進行還原。這樣,對於不知道種子數的人要想解密就需要多費些事了。當然,這種完全相同的序列對於你來說是非常糟糕的。要解決這個問題,需要在每次產生隨機序列前,先指定不同的種子,這樣計算出來的隨機序列就不會完全相同了。你可以在調用rand()函數之前調用srand( (unsigned)time( NULL ) ),這樣以time函數值(即當前時間)作為種子數,因為兩次調用rand函數的時間通常是不同的,這樣就可以保證隨機性了。你也可以使用srand函數來人為指定種子數。Windows 9x/NT的游戲FreeCell就允許用戶指定種子數,這樣用戶如果一次游戲沒有成功,下次還可以以同樣的發牌結果再玩一次。

問題2: 我按照上述方法並不能產生隨機數,僅產生公差為3或4的等差數列:
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#include <time.h>
void main()
{
for(int i=0;i<100000;i++)
{
srand( (unsigned)time( NULL ) );
cout<<rand()<<endl;
}
}
專家解答:
你的程序是有問題的,你每產生一個隨機數之前,都調用一次srand,而由於計算機運行很快,所以你每次用time得到的時間都是一樣的(time的時間精度較低,只有55ms)。這樣相當於使用同一個種子產生隨機序列,所以產生的隨機數總是相同的。你應該把srand放在循環外:
srand( (unsigned)time( NULL ) );
for(int i=0;i<100000;i++)
{
//相關語句
}

③ c語言隨機函數使用

randomize在VC6下無法使用的;

不過你可以用:srand(time(NULL));代替,就可以產生偽隨機數了

這是要隨機出1000以內的數用法:rand()%1000;

修改後的程序,請注意看後面的注釋:

#include<stdlib.h>
#include<time.h>//加上頭文件printf用
#include<stdio.h>//加上頭文件time用

voidmain()
{
inti,x,k=0;
srand(time(NULL));//用srand函數替換了原來的randomize
for(i=0;i<100;i++)
{
x=rand()%1000;//用rand函數替換了原來的random
if(x>=200&&x<300)
{
k++;
printf("%d",x);
}
}
printf(" total=%d ",k);
}

這是運行的結果,有問題再問,滿意請採納

④ C語言中產生隨機數的函數是什麼

rand函數也是調用dos的時鍾,進行的偽隨機函數.
你也可以使用時鍾來模擬隨機函數.
可以試用gettime這個函數:
long int MyRand(int x)
{
struct time t1,t2,t3;
gettime(&t1);
int y1=t1.ti_hund;//取1/100s作為基數
gettime(&t2);
int y2=t2.ti_hund;//取1/100s作為基數
gettime(&t3);
int y3=t3.ti_hund;//取1/100s作為基數
return y1*y2*y3;//產生的隨機數0~99*99*99
}

⑤ c語言中隨機數怎樣寫

C語言
函數
名rand()
簡介

能::偽
隨機數
發生器
所屬庫:stdlib.h

法:
需要先調用srand
初始化
,一般用當前
日歷時間
初始化隨機數種子,這樣每次執行
代碼
都可以產生不同的隨機數。
函數原型:int
rand(void);
相關函數:srand、time、GetTickCount
程序例
1:
#include
"stdio.h"
#include
"stdlib.h"
int
main(void)
{
int
i;
printf("Ten
random
numbers
from
0
to
99\n\n");
for(i=0;
i<10;
i++)
printf("%d\n",
rand()
%
100);
return
0;
}
例1程序在每次
運行時
都會生成相同的十個
偽隨機數
,如要每次生成的隨機數不同應結合srand函數和
time函數

///////////////////
int
i,a;
for(i=0;i<3;i++)
{
a=rand()%9;
printf("%d",a);
}

⑥ C語言中怎樣生成隨機數

C語言生成
隨機數

函數
為rand。
1
聲明:
int
rand(void);
2
頭文件:
stdlib.h
3
功能:
獲取一個非負隨機
數值

4
注意事項:
a)
rand是
偽隨機數
,由一個種子計算得來。
如果種子相同,每次啟動
程序
,獲取到的
隨機序列
是固定的。
可以通過srand設置當前時間作為種子,使隨機效果更好。
srand(time(NULL));
b)
要獲取[m,n]范圍的隨機數,可以使用代碼
rand()%(n-m+1)+m

⑦ c語言隨機數函數是什麼

C語言隨機函數主要用於實現一組隨機數的生成。

代碼示例如下:

#include<stdio.h>

#include<stdlib.h>

int main ()

{

int a;

a=rand()%4;

printf("%d ",a);

return 0;

}

C預先生成一組隨機數,每次調用隨機函數時從指針所指向的位置開始取值,因此使用rand()重復運行程序產生的隨機數都是相同的,可以通過srand()函數來改變指針位置。

(7)c語言隨機數函數擴展閱讀:

C語言隨機函數指針位置

void srand( unsigned int seed )

改變隨機數表的指針位置(用seed變數控制)。一般配合time(NULL)使用,因為時間每時每刻都在改變,產生的seed值都不同。

基於毫秒級隨機數產生方法:

#include<windows.h>

種子設為:srand(unsigned int seed);

srand(GetTickCount());

參考資料:網路-C語言隨機函數

⑧ 關於C語言隨機函數

把 srand( time(0) ); 放在循環外每次產生隨機數的種子也是一樣的啊,為什麼產生的隨機數就不一樣了?
因為隨機函數只需要一個種子就能產生一系列的隨機數,並不是每個隨機數都需要一個種子。

你把 srand(time(0)) 放到循環前面就可以了。
原因: time(0)返回的是系統的時間(從1970.1.1午夜算起),單位:秒,而那個循環運行起來耗時連0.000001秒都不到! 也就是說,srand(time(0)) 連著4次的種子是一樣的,種子一樣,生產的隨機數當然是一樣了。

如果你在把srand()放循環裡面,在中間加個sleep函數,消耗一點時間(間隔大於1秒),那麼生成的rand 就不一樣了.但是這樣做很不好,連著兩次用srand生成的種子,間隔一樣,生產的隨機數間隔有會有規律性。

另:因為兩次運行同一程序的時間肯定是不一樣的,所以把srand放在循環前面可以得不同的種子,這樣才能得到你想要的。

⑨ c語言怎麼調用隨機數生成函數

如何運用time函數和srand函數生成隨機數
#include
<stdio.h>
#include
<stdlib.h>//srand()、rand()
#include
<time.h>//time();
#define
N
50
int
main()
{
int
n;
srand((unsigned)time(NULL));//設置隨機數種子
while
(1)
{
n
=
(rand()
%
10)
+
1
;//產生1~10的隨機數
//rand()產生的是一個很大的數,對其求余就可以達到限定范圍的目的
printf("%d
",
n);
}
return
0;
}

⑩ c語言隨機函數

應該在產生隨機數之前加一個產生隨機種子的函數:randomize

熱點內容
開源伺服器雲存儲多少錢 發布:2025-01-04 16:10:45 瀏覽:662
我的世界泥土商店伺服器8月 發布:2025-01-04 15:58:40 瀏覽:822
怎麼在電腦上重啟機房伺服器 發布:2025-01-04 15:40:02 瀏覽:869
攝影後期電腦配置i5怎麼樣 發布:2025-01-04 15:39:19 瀏覽:403
linux橋接設置 發布:2025-01-04 15:39:07 瀏覽:59
安卓屏幕怎麼設置成老人用的 發布:2025-01-04 15:33:53 瀏覽:314
學電腦編程要多久 發布:2025-01-04 15:20:15 瀏覽:331
華為手機存儲卡插哪 發布:2025-01-04 15:01:02 瀏覽:39
ftp是一種服務嗎 發布:2025-01-04 14:59:41 瀏覽:161
寶寶商業保險怎麼配置 發布:2025-01-04 14:53:20 瀏覽:786