VS2010中srand和rand产生随机数的用法
来源:互联网 发布:河北奇速网络 编辑:程序博客网 时间:2024/06/06 04:06
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 2010\VC\crt\src\rand.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 10int _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产生随机数的用法
- C/C++中产生随机数(rand和srand的用法)
- C/C++中产生随机数函数(rand,srand)的用法
- C++中srand()和rand()产生伪随机数的方法
- 随机数的产生rand( ) 和srand( )
- rand 和 srand产生随机数
- rand 和 srand产生随机数
- srand()和rand()产生随机数
- C/C++中产生随机数(rand,srand用法)
- [转]C/C++中产生随机数(rand,srand用法)
- C/C++中产生随机数(rand,srand用法)
- C/C++中产生随机数(rand,srand用法)
- C/C++中产生随机数(rand,srand用法)
- C/C++中产生随机数(rand,srand用法)
- C/C++中产生随机数(rand,srand用法)
- C/C++中产生随机数(rand,srand用法)
- C/C++中产生随机数(rand,srand用法)
- C/C++中产生随机数(rand,srand用法)
- ByteArrayOutputStream用法
- [LeetCode]Jump Game
- 如何用 SQL Tuning Advisor (STA) 优化SQL语句
- 《Linux程序设计》——调试
- HTML中行内元素与块级元素有哪些及区别 (网易博客)
- VS2010中srand和rand产生随机数的用法
- trie树(字典树)&& 后缀树
- 第7周项目1-电阻串联
- Linux常用命令
- hibernate: 用Disjunction和Conjunction构造复杂的查询条件
- Insertion Sort List
- PAT 1005. Spell It Right (20)
- linux下去除空行的方法
- 锥酌谞滋租卒踪鬃渍纂奏租茁追桌准谆揍