c++中的RANDOM()函数怎么使用?
为什么作了一个10次的循环,用random输出的都是一个数呀?是不是应该输出10个不同的数呀??我刚学习C++不懂,谢谢大家能帮我做详细解答!
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
for (int i=0;i<10;i++)
{
randomize();
unsigned int r=random(100);
cout<<r<<'\t';
}
return 0;
}
是这个样子吗??不行呀?? 展开
方法:
rand()函数用来产生随机数,但是,rand()的内部实现是用线性同余法实现的,是伪随机数,由于周期较长,因此在一定范围内可以看成是随机的。
rand()会返回一个范围在0到RAND_MAX(32767)之间的伪随机数(整数)。
在调用rand()函数之前,可以使用srand()函数设置随机数种子,如果没有设置随机数种子,rand()函数在调用时,自动设计随机数种子为1。随机种子相同,每次产生的随机数也会相同。
rand()函数需要的头文件是:<stdlib.h>
rand()函数原型:int rand(void);
使用rand()函数产生1-100以内的随机整数:int number1 = rand() % 100;
C++中的rand( )应该小写,需要加载<stdlib.h>头文件
拓展资料
rand( )函数不是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子。如果你在第一次调用rand()之前没有调用srand(),那么系统会为你自动调用srand()。而使用同种子相同的数调用 rand()会导致相同的随机数序列被生成。
// C++随机函数(VC program)
#include <stdio.h>
#include <iostream>
#include <time.h>
using namespace std;
#define MAX 100
int main(int argc, char* argv[])
{
srand( (unsigned)time( NULL ) );//srand()函数产生一个以当前时间开始的机种子.应该放在for等循环语句前面 不然要很长时间等待
for (int i=0;i<10;i++)
cout<<rand()%MAX<<endl;//MAX为最大值,其随机域为0~MAX-1
return 0;
}
拓展资料
C语言中int random(num)可以这样使用,它返回的是0至num-1的一个随机数。可以解决的方法有两个:
可改用C++下的rand函数来实现。C++标准函数库提供一随机数生成器rand,返回0-RAND_MAX之间均匀分布的伪随机整数。 RAND_MAX必须至少为32767。
random函数不是ANSI C标准,不能在gcc,vc等编译器下编译通过。但在C语言中int random(num)可以这样使用,它返回的是0至num-1的一个随机数。可以解决的方法有两个:
可改用C++下的rand函数来实现。C++标准函数库提供一随机数生成器rand,返回0-RAND_MAX之间均匀分布的伪随机整数。 RAND_MAX必须至少为32767。例如,
// C++随机函数(VC program)
#include <stdio.h>
#include <iostream>
#include <time.h>
using namespace std;
#define MAX 100
int main(int argc, char* argv[])
{
srand( (unsigned)time( NULL ) );//srand()函数产生一个以当前时间开始的机种子.应该放在for等循环语句前面 不然要很长时间等待
for (int i=0;i<10;i++)
cout<<rand()%MAX<<endl;//MAX为最大值,其随机域为0~MAX-1
return 0;
}
还有一种方法可以使C++调用C的函数,因为C++的编译器对函数的处理和C不同,所以往往即使包含了相关的头文件,也会使得声明是错误的。解决方法是使用extern“C”标识符来声明旧版C库函数。例如,
extern "C" {
int random(int);
}
int main(int argc , char* args[])
{int i,r;
i=100;
r=random(i);
cout<<r<<endl;return 0;
}
2005-11-01
如果是Rand到时可以
srand( (unsigned)time(NULL)); //生成种子
r = rand()%100;
让种子化,然后random(100);就可以了。