1. 程式人生 > >番外篇:隨機數·真

番外篇:隨機數·真

隨機數函式是什麼?

利用函式,生成一個特定區間內的隨機大小的整數。

隨機數的日常應用:

1、給題目出資料

2、打表蒙答案

3、小遊戲

=============================================================

函式介紹:

因為隨機數的本質是函式的應用,先介紹要用的幾個函式

1、rand()//生成函式//需要<cstdlib>標頭檔案

2、srand()//初始化函式

3、time()//獲取系統時間函式 //需要 <ctime>標頭檔案

=============================================================

例項程式碼:

生成一個在[ x ,y ) 區間內的隨機整數

樣例輸入: 100 500

樣例輸出:一個在100和499之間的隨機數。

#include<cstdio>
#include<ctime>//獲取時間函式要用到
#include<cstdlib>//rand函式要用

int main()
{
	int x,y,k,t;
	scanf("%d %d",&x,&y);//區間在[x,y) 
	
	t=y-x;
	
	srand(time(0));//初始化 
	
	k=rand()%t;//獲取隨機數 
	
	k+=x;// 確認區間 
	
	printf("%d",k);
	
	return 0;
	
}

如果你只需要一個拿來就用的工具,恭喜你,已經獲得了!!

==================後面都是廢話,不用再往下看了!================

=============================================================

=============================================================

=============================================================

=============================================================

=============================================================

=============================================================

例項分析:

1、rand()函式其實是一個偽隨機整數序列,每次產生的是0~RAND_MAX(該值與平臺有關,至少為32767),之間的隨機數,但其產生的隨機數時偽隨機數,預設隨機數種子為0,所以每次重新執行程式,都會產生相同的隨機數。測試程式碼如下

#include<cstdio>
#include<cstdlib>//rand函式要用

int main()
{
	int k;
	
	k=rand();//獲取隨機數 
		
	printf("%d",k);//輸出 

	return 0;	
}

2、srand()//初始化函式

為了解決多次生成的時候,數字能夠隨機變動,需要一個每次都不同的種子,

也就是說:srand()函式引數,如果有一個每次不同的數字,它就能幫助 rand()函式;

 srand(請給我一個每次不同的數字放這裡)。

為了能夠獲得一個每次都不同的數字,呼叫系統時間!

3、time()//獲取系統時間函式

時間戳,指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在經過了多少秒。
在C語言中可以通過time()函式獲取到當前的秒數,引數為0則函式返回值即為結果,若引數不為0則結果儲存在引數中。

程式碼如下

#include<cstdio>
#include<ctime>//獲取時間函式要用到

int main()
{
	int t=time(0);//獲取當前時間秒數 
	
	printf("%d\n",t);//輸出 

	int h,s,m;
	
	s=t%60;		
	m=t%3600/60;
	h=(t%(24*3600)/3600+8)%24;	

	printf("%02d:%02d:%02d\r",h,m,s);//換算回時分秒顯示 
	
	return 0;
	
}

4、,有了隨機函式,又有了種子,那麼我們就可以生成真正意義的隨機數了!

ps:由於平臺的限制,範圍在0到2^16之間,也就是rand()返回的值不會大於32767。

4.1 如果要生成一個 1-1000 之間的隨機數,只要  rand()%1000 ;

4.2 如果要生成一個 1000-1500 之間的隨機數,需要 rand()%500+1000 //在1000的基礎上,加上500以內的隨機數;

4.3 如果要生成一個超過32767的隨機數,需要 x=rand(),然後對 x 進行適當的加法或者乘法運算;

4.4 如果要生成一個帶小數的隨機數,就是 int 型別和 double 型別之間的轉化問題了。

 

到這裡,您大概明白真正的隨機數怎麼玩了嗎?

請回文章頂部拿完整程式碼去玩耍吧!