VC技术流(2)——VC中rand函数的正确用法_雪无痕 rand函数的用法

最近刚编写了一个VC程序,其中用到了rand函数,在这个过程中发现自己以前用rand函数的时候,方法都是错误的,现在和大家交流一下正确的用法。

我们知道编写VC程序的时候,我们经常会用到rand函数,来生成随机数,以满足我们程序的需要,下面以一个简单的程序为例子:

#include "stdio.h"

#include "stdlib.h"

int main(void)

{

int i;

printf("Ten randomnumbers from 0 to 99nn");

for(i=0;i<10; i++)

printf("%dn", rand() %100);

return 0;

}

这是一个生成10个范围在0-99的随机数的例子,通过VC编译通过后,运行程序,我们会看见结果是10个满足要求的随机数,这说明这个程序很好的完成了要求。

但是当我们反复运行这个程序的时候,我们就会发现问题所在:不管运行程序多少次,程序每次执行的结果都是一样的,程序生成的数并不是真正意义上的随机,而是生成的一组伪随机数。即rand函数的实质是生成一个在范围内的伪随机数。

什么是伪随机数?我个人的理解是,计算机产生一个随机数是通过算法产生的,而这个算法是固定的,影响这种算法的是随机数种子,它决定了你的随机序列的产生。所以在随机数种子固定的情况下(系统默认随机数种子的值为1),计算机产生的随机数是可以预测的,即不是真正意义上的随机。。

问题的解决:想要解决这个问题,我们就不得不说另外一个函数:srand函数,这个函数就是专门针对rand函数而设置的,它的作用就是产生一个随机数种子,随机数种子不同,调用rand函数产生的结果是不同的,所以你如果想生成真正意义上的随机序列,那么在调用rand函数前,最好调用一下srand函数。

我们使用srand函数的时候常常使用系统时间来初始化,即使用time函数来获得系统时间,它的返回值为从 00:00:00GMT, January 1,1970到现在所持续的秒数,然后将time_t型数据转化为(unsigned)型在传给srand函数,即:srand((unsigned)time(&t));还有一个经常用法,不需要定义time_t型t变量,即:srand((unsigned) time(NULL));

在加入上面的语句之后,你会发现你每次执行程序后产生的结果都是不一样的!

PS:在使用rand,srand函数是不要忘记链接头文件#include<stdlib.h>;使用time函数要添加头文件#include<time.h>。

修改后的程序如下:

#include"stdio.h"

#include"stdlib.h"

#include"time.h"

intmain(void)

VC技术流(2)——VC中rand函数的正确用法_雪无痕 rand函数的用法

{

int i;

printf("Ten random numbers from0 to 99nn");

srand((unsigned) time(NULL));

for(i=0; i<10;i++)

printf("%dn",rand() % 100);

return 0;

}

BIT-黄英杰

2011年3月14日14:23:51

  

爱华网本文地址 » http://www.413yy.cn/a/25101014/199926.html

更多阅读

VBA编程中MsgBox函数怎么用 vba msgbox

VBA编程中MsgBox函数怎么用——简介Excel编程中的MsgBox函数用于输出一个对话框,该函数在编程调试以及输出结果方面具有极为重要的意义。下面小编就为大家讲解一下该函数的具体使用方法。VBA编程中MsgBox函数怎么用——方法/步骤

excel中round函数的使用方法 isodd函数的使用方法

excel中round函数的使用方法——简介不少朋友都会问在excel中round函数怎么用,作为使用频率较高函数之一,本文就介绍一下round函数的使用方法。excel中round函数的使用方法——工具/原料office excelexcel中round函数的使用方法——

Excel中COLUMN函数的使用 excel函数的使用方法

Excel中COLUMN函数的使用——简介COLUMN函数是一个简单的辅助函数,在一些复杂的函数计算中会使用到COLUMN函数,但是一般都不会对COLUMN函数作解析,很多朋友对公式函数中突然插入“=COLUMN()”表示理解。这里,为大家介绍COLUMN函数的使用。

VC中获取文件的相对路径与绝对路径 vc 获取绝对路径

Ⅰ、获取相对路径如果当前打开的文件中要寻找同级的目录文件就要用到 .或者 ./ VC编译器都可以识别。例如#define ".XXXXxx.h"如果当前打开的文件中要寻找在上级的目录文件就要用到 .. 或者 ../ VC编译器都可以识别。例如#define "..

声明:《VC技术流(2)——VC中rand函数的正确用法_雪无痕 rand函数的用法》为网友太机智分享!如侵犯到您的合法权益请联系我们删除