當前位置:首頁 » 編程語言 » c語言中的隨機數函數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言中的隨機數函數

發布時間: 2022-01-12 20:50:54

c語言中產生隨機數

隨機數主要有兩個函數
一個種子產生函數
void
srand(int);
一個隨機數產生函數
int
rand();
當我們要產生隨機數的時候,首先我們生成一個隨機數種子(注意相同的種子產生的隨機數序列是一樣的)
然後使用rand()函數得到隨機數
祝你好運

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

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

代碼示例如下:

#include<stdio.h>

#include<stdlib.h>

int main ()

{

int a;

a=rand()%4;

printf("%d ",a);

return 0;

}

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

(2)c語言中的隨機數函數擴展閱讀:

C語言隨機函數指針位置

void srand( unsigned int seed )

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

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

#include<windows.h>

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

srand(GetTickCount());

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

㈢ C語言中有沒有產生隨機數的函數

貼個以前寫下來的例子給你.
#include <stdio.h>
#include <time.h> //include時間頭文件,有這個才可以調用下面的time(NULL)函數
void main()
{
int x,y;
srand( (unsigned)time( NULL ) );//用即時的系統時間來做隨機數種子.生成隨機數
//關於隨機數的說明,有點復雜
//建議看一下面這個網路頁面:
//
// randomize();//上面這句與這一句作用一樣,隨便選一句都行.
x=rand()%20; //隨機生成x,格式rand()%20即要求產生20以內的
//如果不加後面的%20,直接x=rand(),則隨機生成int取值范圍內的正整數.
y=rand()%30; //隨機生成y,30以內的正整數
printf("%d,%d",x,y);
}

㈣ 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語言怎麼調用隨機數生成函數

如何運用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語言中產生隨機數的函數是什麼

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函數。

默認情況下這個函數產生的隨機整數的范圍是[0,RAND_MAX]。

RAND_MAX是一個預定義的宏,其值等於平台上int類型的最大值。

可以使用如下公式來產生一個[min,max]之間的隨機整數:

rand()%(max-min+1)+min

下面這個例子可以產生10個[1,100]的隨機數,並輸出了它們:

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int main()

{

int i;

//初始化隨機數種子

srand(time(NULL));

//printf("%d ",RAND_MAX);

for(i=0;i<10;i++)

printf("%d ",rand()%100+1);

return 0;

}

下面是運行結果的截圖:

㈨ 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語言中的各種取隨機數的函數怎麼用

rand是得到一個隨機數srand是設置一個用來生產隨機數的種子一般,在程序開始的時候用srand這是一個種子,這個種子通常是取當前時間,然後就可以連續的調用rand來得到隨機數了,比如#include <stdlib.h>
#include <stdio.h>
#include <winbase.h>void main( void )
{
int i;
srand( GetTickCount() );
for( i = 0; i < 10;i++ )
printf( "%6d\n", rand() );
}
c語言標准庫沒有random函數