两个整数C ++之间的随机函数发生器

时间:2013-10-08 03:07:04

标签: c++ function random

假设您使用以下原型

具有完全定义且正确的功能
int randomBetween( int lowerBound, int upperBound );

返回下限和上限之间的随机数,包括在内。

编写一个使用randomBetween的主函数来生成介于1和10之间的1000个值。     生成值时,计算该值等于5的次数。     显示该值等于五的次数。     您的程序应该只输出一个数字(即,不要将cout语句放在循环中)。

这是我到目前为止所做的:

   // Function Prototypes
   int randomBetween( int lowerBound, int upperBound );

   int main( )
{

  int lowerbound, upperbound;

  cout << "Enter the value for the lower bound: " ;
  cin >> lowerbound;

  cout << "Enter the value for the upper bound ( lower < upper ) : " ;
  cin >> upperbound;

  cout << "The random value between " << lowerbound << " and "<< upperbound 
       << " is " << randomBetween << endl;

  return EXIT_SUCCESS;
}

int randomBetween( int lowerBound, int upperBound )
{
  int upperbound, lowerbound;
  int randomBetween = rand() % (upperbound-lowerbound) + upperbound;
  return randomBetween;
}

当我编译程序并输入下限和上限的值时,我得到了答案:00E9131B

4 个答案:

答案 0 :(得分:3)

这样:

cout << "The random value between " << lowerbound << " and "<< upperbound 
     << " is " << randomBetween << endl

应该是:

cout << "The random value between " << lowerbound << " and "<< upperbound 
     << " is " << randomBetween(lowerbound,uppderbound) << endl

在randomBetween函数中,您不需要声明变量upperbound和lowerbound,因为它们已经传递给函数。

同样,将变量命名为函数名称也是不好的做法,因此您应该在randomBetween函数中重命名'randomBetween'变量。

您可能需要查看rand()函数的引用,因为randomBetween函数不会返回所需范围内的值:

http://en.cppreference.com/w/cpp/numeric/random/rand

我不确定你是否将它从你发布的内容中排除,但不要忘记包含'cstdlib'和'iostream'库:

#include<iostream>
#include<cstdlib>
using namespace std;

答案 1 :(得分:3)

替换此行

cout << "The random value between " << lowerbound << " and "<< upperbound 
   << " is " << randomBetween << endl;

用这个

cout << "The random value between " << lowerbound << " and "<< upperbound 
   << " is " << randomBetween(lowerbound, upperbound) << endl;

你正在做的是打印出功能地址。你需要用参数调用函数。


也改变了这个

int randomBetween( int lowerBound, int upperBound )
{
  int upperbound, lowerbound;
  int randomBetween = rand() % (upperbound-lowerbound) + upperbound;
  return randomBetween;
}

int randomBetween( int lowerBound, int upperBound )
{
  int randomBetween = rand() % (upperbound-lowerbound) + upperbound;
  return randomBetween;
}

在功能

中不再需要重新声明参数

答案 2 :(得分:0)

您的函数不使用参数

int randomBetween( int lowerBound, int upperBound )
{
    int randomBetween = rand() % (upperBound-lowerBound) + upperBound;
    return randomBetween;
}

用参数调用函数,

... << randomBetween(lowerbound, upperbound) <<endl;

答案 3 :(得分:0)

首先,您的C ++代码包含一些错误。看起来你返回了函数的地址。即使C ++中的函数没有参数,在调用时,也必须使用带括号的函数名称function()。在您的情况下,它确实需要将参数需要正确地传递给它function(param0, param1, param2)
看起来你正在假设,因为你命名变量lowerboundupperbound与它将被隐式传递的函数参数相同,但这不是C ++的工作方式。
但是,您可以将lowerboundupperbound定义为全局变量,而不是让您的函数randomBetween()采用任何参数。您可以通过定义外部函数的范围来设置全局变量 您还需要初始化所有变量。在定义时,只需将lowerboundupperbound设置为0