错误:此范围内未声明'random'

时间:2014-04-02 15:37:08

标签: c++

我很难在C ++中使用“random()”函数。

我的代码:

#include<iostream>
#include<stdlib.h>
#include<math.h>
const int low=15;
using namespace std;
int main() {
  int randomize();
  int point =5,number;
  for(int i=1;i<=4;i++) {
    number=low+random(point);
    cout<<number<<":"; point--;
   }
}

错误:

error: 'random' was not declared in this scope
Process terminated with status 1 (0 minute(s), 0 second(s))
1 error(s), 0 warning(s) (0 minute(s), 0 second(s))

这是什么意思,我该如何纠正?

我正在使用CodeBlock IDE(不确定是否重要)。

2 个答案:

答案 0 :(得分:2)

您打算调用的函数是rand而不是randomize。请参阅C++ Reference - rand

使用rand功能有几个步骤。首先,你必须为PRNG播种(见Wikipedia - Random Seed)。这是使用srand()完成的(请参阅C++ Reference - srand)。

PRNG播种后,您可能会开始生成随机数。这些数字可以是[0,RAND_MAX]范围内的任何位置,其中RAND_MAX保证不小于32767(参见C++ Reference - RAND_MAX)。

为了将返回值的范围限制为不同的最大值(例如100),请使用模数%运算符(请参阅Cprogramming - Modulus Operator)。

将这些信息放在一起,我们可以将您的代码修改为:

#include <iostream> 
#include <stdlib.h> 
#include <math.h> 

using namespace std;

const int low=15;

int main( ) 
{ 
    int point = 5; 
    int number = 0;
    int random = 0;

    // Seed the random function first
    srand( 0 );

    for( int i=1; i<=4; i++ ) 
    { 
        random = rand( ) % 100; // Generate a random number on the range [0,100)
        number = low + random; 

        cout<< number << ":" ; 
        point--; 
    } 
}

请注意,在示例中,我提供0作为种子。因此,PRNG将在每次执行时生成相同的随机值集。如果要生成不同的随机数集,则提供不同的种子。通常的做法是提供当前时间,以便在每次执行时生成新的集合。

随着时间播种可能类似于

#include <time.h>

// ...

srand( time( NULL ) );

答案 1 :(得分:0)

C ++标准库中没有random函数。你有什么期望random(point)回归?如果它是0到点-1之间的随机整数,请尝试rand() % point。如果它是0和点之间的随机浮点数,请尝试rand() * double(point) / RAND_MAX