设为首页 加入收藏

TOP

随机数生成解析
2014-11-23 20:10:33 来源: 作者: 【 】 浏览:9
Tags:随机 生成 解析
我们平时在做一些分析数据的时候经常会用到随机数,我们知道,随机数是一个设备,在利用这个设备生成随机数时,需要提供一个种子,如果我们不提供,那么默认会提供一个为1的种子,这时,随机数生成器生成的并不是真正意义上的随机数,因为每次那些随机数都是相同的,例如下面的这个例子:
#include   
#include   
#include   
  
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   
#include   
#include   
  
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
#include
#include

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()提供种子的,为了使每次提供的种子都不一样,我把时间作为参数提供给函数,由于时间肯定是每次都不同的,所以,这样得到的才是真正意义上的随机数。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇[poj 2553]The Bottom of a Graph.. 下一篇hdu 4617 : Weapon

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·微服务 Spring Boot (2025-12-26 18:20:10)
·如何调整 Redis 内存 (2025-12-26 18:20:07)
·MySQL 数据类型:从 (2025-12-26 18:20:03)
·Linux Shell脚本教程 (2025-12-26 17:51:10)
·Qt教程,Qt5编程入门 (2025-12-26 17:51:07)