|
发表于 2009-11-4 02:13:00
|
显示全部楼层
IP:江苏扬州
以下是引用lc8023在2007-1-23 9:46:00的发言:
我写了一个随机数程序,代码如下:
#include <cstdlib>
#include <iostream>
#define MAX 11;
using namespace std;
int myrand(char *i);
void xy();
int n,m,k;
int main(int argc, char *argv[])
{
char lc[4] = " lc";
char *mnv="mnv";
myrand(lc);
myrand (mnv);
system("PAUSE");
return EXIT_SUCCESS;
}
int myrand(char *i)
{
srand((unsigned)time(NULL));
n = rand()%MAX ;
m = rand()%MAX ;
k = n + m;
cout << i <<"的第一张牌:"<< n <<" 第二张牌:" << m <<" 点数之和:"<< k<<endl;
return k;
}
运行结果是:
lc的第一张牌:7 第二张牌:9 点数之和:16
mnv的第一张牌:7 第二张牌:9 点数之和:16
就是说我两次调用 int myrand(char *i) 方法
myrand(lc);
myrand (mnv);
所产生的随机数是一样的,本人学习C++只有一周,所以弄不明白这是怎么回事,
我想请教各位高手帮忙给看下!!!
谢谢! QQ: 373655371
首先,“本人学习C++只有一周”,能写出这么标准的程序,很不错!加油!
其次,“为什么结果一样”,是因为你的随机数生成函数本身很小,执行时间非常短,也就是说两次调用srand((unsigned)time(NULL)); 所用的系统时间一样,由于随机数种子一样,所以生成的结果也一样 |
|