平行透视基本原理:c++中的RANDOM()函数怎么使用?

来源:百度文库 编辑:高校问答 时间:2024/04/28 23:09:36
我想取1-100之间的整数!
为什么作了一个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。

C++中有RANDOM函数吗?
如果是Rand到时可以

srand( (unsigned)time(NULL)); //生成种子

r = rand()%100;

random函数不是ANSI C标准,不能在gcc,vc等编译器下编译通过。但在C语言中int random(num)可以这样使用,它返回的是0至num-1的一个随机数。可以解决的方法有两个:

  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; 

    }

  2. 还有一种方法可以使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;
    }

首先要调用一个randomize();
让种子化,然后random(100);就可以了。