c++ 在main()函数外创建函数,用于特定范围内的随机数

sq1bmfud  于 2023-04-13  发布在  其他
关注(0)|答案(3)|浏览(349)

我尝试编写一个函数,用于用户决定的范围内的随机数。我使用上面定义的函数RandomNumber在int main()中调用srand()。
我知道如果在main()中做随机数方程,同时在main()中调用srand(),它会按照我想要的方式工作。
这是一个没有做我想要的事情的程序。返回值是数字和字母的组合。我需要返回一个由用户输入确定的范围内的数字。本质上,我需要在int main()函数外部创建一个随机数生成函数,然后能够调用int main()内部的RandomNumber。我在调用srand(time(NULL))时遇到了麻烦;.我必须在main()内部调用srand(),否则随机数不会正确生成。

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

int RandomNumber(int userNum1, int userNum2) {

return (rand() % (userNum2 - userNum1) + userNum1);
}

int main()
{   
    srand(time(NULL));
int userNum1;
int userNum2;
cin >> userNum1;
cin >> userNum2;


cout << RandomNumber << endl;

return 0;
}

即使我在RandomNumber函数内部调用srand(),它也不会按照我想要的那样工作。//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
这是一个程序,我想做什么,但我试图定义函数RandomNumber以上int main()。

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



int main()
{   
    srand(time(NULL));
    int RandomNumber;
    int userNum1;
    int userNum2;
    cin >> userNum1;
    cin >> userNum2;

    RandomNumber = rand() % (userNum2 - userNum1) + userNum1;
    cout << RandomNumber << endl;

    return 0;
}

//////////////////////////////////////////////如何在main()之外创建我的RandomNumber函数并调用它insdide main()?

qxgroojn

qxgroojn1#

问题是:如果RandomNumber是一个函数,cout << RandomNumber会尝试打印该函数在内存中的地址(它实际上是未指定的;在某些系统上,它只是打印1来确认函数存在的事实)。
要调用函数,请提供参数列表:

cout << RandomNumber(userNum1, userNum2)

即使一个函数没有得到任何参数,你也必须提供圆括号来调用它。例如:

void do_useful_stuff() // no arguments
{
    puts("Useful Info");
}

int main()
{
    cout << do_useful_stuff; // doesn't print anything useful
    cout << do_useful_stuff(); // prints "Useful Info"
}

在运行良好的代码中

RandomNumber = rand() % (userNum2 - userNum1) + userNum1;
cout << RandomNumber << endl;

RandomNumber不是一个函数,而是一个数字。打印它将不会有任何意外。

pobjuy32

pobjuy322#

在我看来,我能够弄清楚最精简的版本。

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

int generateRandomNumber(int lowNumber, int highNumber) {
    int randomNumber = rand() % (highNumber - lowNumber) + lowNumber;
    return randomNumber;
}

int main() {
    srand(time(NULL));
    int userNum1;
    int userNum2;

    cin >> userNum1;
    cin >> userNum2;

    cout << generateRandomNumber(userNum1, userNum2) << '\n';

    return 0;
}
hlswsv35

hlswsv353#

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

// Declare the function to generate a random number
int generateRandomNumber(int lowerBound, int upperBound);

int main()
{
    srand(time(NULL));
    int userNum1;
    int userNum2;

    cin >> userNum1;
    cin >> userNum2;

    int RandomNumber = generateRandomNumber(userNum1, userNum2);
    cout << RandomNumber << endl;

    return 0;
}

// Define the function to generate a random number
int generateRandomNumber(int lowerBound, int upperBound)
{
    int randomNumber = rand() % (upperBound - lowerBound) + lowerBound;
    return randomNumber;
}

相关问题