程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 隨機數生成解析

隨機數生成解析

編輯:C++入門知識

 我們平時在做一些分析數據的時候經常會用到隨機數,我們知道,隨機數是一個設備,在利用這個設備生成隨機數時,需要提供一個種子,如果我們不提供,那麼默認會提供一個為1的種子,這時,隨機數生成器生成的並不是真正意義上的隨機數,因為每次那些隨機數都是相同的,例如下面的這個例子:

#include<stdio.h>   
#include<stdlib.h>   
#include<time.h>   
  
void print_rand();  
  
int main(void)  
{  
    print_rand();  
    printf("\n");  
}  
  
void print_rand()  
{  
    int a[10], i;  
      
      
    for(i = 0; i < 10; i++)  
    {  
        a[i] = rand()%100;  
    }  
      
    for(i = 0; i < 10; i++)  
    {  
        printf("%d  ", a[i]);  
    }  
}  

現在,我把程序改動如下:
 

#include<stdio.h>   
#include<stdlib.h>   
#include<time.h>   
  
void print_rand();  
  
int main(void)  
{  
    print_rand();  
    printf("\n");  
}  
  
void print_rand()  
{  
    int a[10], i;  
      
    srand(time(NULL));   
      
    for(i = 0; i < 10; i++)  
    {  
        a[i] = rand()%100;  
    }  
      
    for(i = 0; i < 10; i++)  
    {  
        printf("%d  ", a[i]);  
    }  
}  
   

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void print_rand();

int main(void)
{
	print_rand();
	printf("\n");
}

void print_rand()
{
	int a[10], i;
	
	srand(time(NULL)); 
	
	for(i = 0; i < 10; i++)
	{
		a[i] = rand()%100;
	}
	
	for(i = 0; i < 10; i++)
	{
		printf("%d  ", a[i]);
	}
}
 

  從兩次執行的程序可以看出,第一個程序得到的輸出都是一樣的,因為種子沒有變,始終是1,第二個程序輸出的每一次都不一樣,因為,我用到了這個函數:

 srand(time(NULL));  

srand(time(NULL)); 這個函數是為 rand()提供種子的,為了使每次提供的種子都不一樣,我把時間作為參數提供給函數,由於時間肯定是每次都不同的,所以,這樣得到的才是真正意義上的隨機數。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved