我是靠谱客的博主 舒心小天鹅,最近开发中收集的这篇文章主要介绍VS2010中srand和rand产生随机数的用法1.VC和VS2010中srand()和rand()函数的区别       在VC中rand()和srand()函数是包含在math.h头文件中,在使用时需要添加#include "math.h"或者#include ,但是在VS2010中srand()和rand()是包含在stdlib.h中的,在使用时需要添加语句#include "stdlib.h"或者#include 。2.VS2010中srand()和,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.VC和VS2010中srand()和rand()函数的区别    

   在VC中rand()和srand()函数是包含在math.h头文件中,在使用时需要添加#include "math.h"或者#include <math.h>,但是在VS2010中srand()和rand()是包含在stdlib.h中的,在使用时需要添加语句#include "stdlib.h"或者#include <stdlib.h>。

2.VS2010中srand()和rand()函数的用法

     VS2010中通常用srand()和rand()联合使用来产生随机数,用srand(unsigned int seed)来生成seed,然后通过rand()来产生随机数。它们的原始定义都包含在“根目录visual studio 2010VCcrtsrcrand.c"中。

(1)关于srand的讨论 

      srand(unsigned int seed)无返回值,但是有形参,通常形参有两种形式,一种是常数,如srand(0),srand(1)等,另一种是嵌入函数,这时候通常会需要包含另外的头文件,time.h等,如srand(time(null)),srand(rand()%5)等等。

      srand函数放在循环内时用rand()产生随机数时每次产生的随机数都一样,执行多少遍都一样。代码如下:

#include "stdafx.h"
#include "stdlib.h"
//#include "time.h"
#define SIZE 10

int _tmain(int argc, _TCHAR* argv[])
{
	int i,j;
	for(i=0;i<4;i++)
	{
		int a[4];
		srand(0);
		//srand(time(0));
		for(j=0;j<4;j++)
		{
			a[j]=rand()%SIZE;
			printf("%d    ",a[j]);
		}
		printf("n");
	}
	return 0;
}
这时的运行结果是:


     由此可见循环内使用srand时rand()每次产生的随机数都一样。

     上述代码中将srand(0)放到外层循环外,这时rand()产生的随机数每次都不一样。

改进后的运行结果为:


     由此可见循环外使用srand时rand()每次产生的随机数都不一样。

     如果要了解srand(0)和srand(1)的区别可参阅参考来源[2]。

(2)关于rand()的讨论

     rand()用来从srand()伪随机数结果中产生随机数,没有形参,有返回值,返回值为处于0~32767之间的随机数,通常我们用取余”%“的方法来得到我们想要的区间内的随机数,比如rand()%10即可得到0~9之间的任意随机数。

    如果我们想要获得1~10之间的随机数的时候怎么办呢?这时候加一就可以了,即1+rand()%10。

    由此得到一般规律,我们想要得到0~(N-1)之间的随机数时我们可以采用如下步骤:

    方法一:直接用rand()%N;

    方法二:先定义#define MAXSIZE  32767,然后采用语句"(int)(N*rand()/(MAXSIZE+1.0));",这里之所以加上1.0是为了使除法得到的结果是浮点型。

    如果需要得到1~N之间的随机数秩序在上述表达式加一即可,即1+rand()%N或者1+(int)(N*rand()/(MAXSIZE+1.0))。

    

参考来源:

   [1]http://blog.sina.com.cn/s/blog_678c3e390100qndg.html

    [2]http://stackoverflow.com/questions/8049556/what-s-the-difference-between-srand1-and-srand0



最后

以上就是舒心小天鹅为你收集整理的VS2010中srand和rand产生随机数的用法1.VC和VS2010中srand()和rand()函数的区别       在VC中rand()和srand()函数是包含在math.h头文件中,在使用时需要添加#include "math.h"或者#include ,但是在VS2010中srand()和rand()是包含在stdlib.h中的,在使用时需要添加语句#include "stdlib.h"或者#include 。2.VS2010中srand()和的全部内容,希望文章能够帮你解决VS2010中srand和rand产生随机数的用法1.VC和VS2010中srand()和rand()函数的区别       在VC中rand()和srand()函数是包含在math.h头文件中,在使用时需要添加#include "math.h"或者#include ,但是在VS2010中srand()和rand()是包含在stdlib.h中的,在使用时需要添加语句#include "stdlib.h"或者#include 。2.VS2010中srand()和所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部