Генератор случайных функций между двумя целыми числами C ++

0

Предположим, что у вас есть полностью определенная и правильная функция со следующим прототипом

int randomBetween( int lowerBound, int upperBound );

который возвращает случайное число между нижней и верхней границами включительно.

Напишите основную функцию, которая использует randomBetween для генерации 1000 значений от 1 до 10 включительно. Когда значения генерируются, подсчитайте, сколько раз значение равно пяти. Покажите, сколько раз значение было равно пяти. Ваша программа должна выводить только одно число (т.е. Не ставить инструкцию 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

Теги:
function
random

4 ответа

0
Лучший ответ

Хорошо, во-первых, ваш код C++ содержит несколько ошибок. Похоже, что вы возвращаете адрес функции. Даже если функция в C++ не принимает никаких параметров, при вызове вы всегда должны следовать имени функции с помощью скобки: function(). В вашем случае он принимает параметры, которые необходимо правильно передать ему function(param0, param1, param2).
Похоже, вы предполагаете, потому что вы назвали ваши переменные lowerbound и upperbound те же, что и параметры функции, которые будут неявно переданы, но это не так, как работает C++.
Однако вы можете определить lowerbound и upperbound как глобальные переменные и не иметь функцию randomBetween() принимать любые параметры. Вы можете установить глобальные переменные, определив затем вне сферы действия функции.
Вам также необходимо инициализировать все переменные. Просто установите lowerbound и upperbound на 0 когда вы их определяете.

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;
}

вам не нужны параметры повторного использования снова в функции

  • 0
    когда я делаю это, компилятор выдает ошибку, утверждая, что переменные lowerbound и upperbound неинициализированы.
  • 0
    @AlexPatel посмотреть мое обновление
Показать ещё 2 комментария
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;
0

Ваша функция не использует аргументы,

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

И вызовите функцию с аргументами,

... << randomBetween(lowerbound, upperbound) <<endl;
  • 0
    когда я делаю это, компилятор выдает ошибку, утверждая, что переменные lowerbound и upperbound неинициализированы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню