我很难在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(不确定是否重要)。
答案 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