注册 登录
编程论坛 C++教室

求助:关于srand函数的详解

醉生梦死 发布于 2007-08-28 13:16, 1470 次点击
//游戏中强装备的简易程序
#include <iostream>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
using namespace std;
int main(){
int i=0,j=0,t=0;
char c;
loop:srand( (unsigned)time( NULL ) );
i=rand() ;
cout<<"要精练:是 按d 否 任意键... ?"<<endl;
c=getchar();

if (c=='d')
{
if (i%2!=0)
t=t+1;
else goto l0;
cout<<"装备加 +"<<t<<endl;

goto loop;
// else
l0: cout<<"装备消失"<<endl;

//}
}else cout<<"取消精练"<<endl;
system("PAUSE");
return 0;
}

loop:srand( (unsigned)time( NULL ) ); 这个函数是求随即数的,但是在不明白系统是怎么通过这个函数分配随机数的,谁能详细跟我讲讲这个函数,谢谢啦
5 回复
#2
xchxp321god2007-08-28 14:27

C++中用于产生随机数的函数
rand() 产生0——32767之间的随机整数
srand(number) 种子函数。其中number是无符号整型参数,称为种子值。但种子值number不同的时候,函数sand产生的随机数序列也不同。
time(NULL) 返回用整型表示系统当前时间。上程序中作为srand函数的参数。
这样讲明白了吗?

#3
醉生梦死2007-08-28 23:31
以下是引用xchxp321god在2007-8-28 14:27:09的发言:

C++中用于产生随机数的函数
rand() 产生0——32767之间的随机整数
srand(number) 种子函数。其中number是无符号整型参数,称为种子值。但种子值number不同的时候,函数sand产生的随机数序列也不同。
time(NULL) 返回用整型表示系统当前时间。上程序中作为srand函数的参数。
这样讲明白了吗?

#4
醉生梦死2007-08-28 23:36
回复:(xchxp321god)C++中用于产生随机数的函数rand...
但种子值number不同的时候,函数srand产生的随机数序列也不同。
time(NULL) 返回用整型表示系统当前时间。上程序中作为srand函数的参数。
不太明白这句话什么意思,这个程序用(unsigned)time(NULL)作为参数有什么好处吗?或者说用这个作为参数会产生什么样的随即数系列呢?
#5
xchxp321god2007-08-28 23:53

srand()需要有个无符号整型参数种子.
只要是无符号整型参数都可以作为种子.但是既然是随机,为了达到随机的效果如果只给它个0到10的数让它去生成,效果肯定不好了. time()返回的系统当前时间是时时刻刻都在变化的,能更好的体现随机的要求.另外这里的(unsigned)起到强制类型转换的作用

#6
aipb20072007-08-29 00:32

如果单纯想了解怎么用,记住就行。

否则就去看下<ctime>头文件。

1