所以我正在创建一个随机数生成器,我一直遇到问题。在我的程序中,我将代码打印到“int main()”函数中。问题是它之后打印了0。它也说我必须使用回归,但我不想。我想将随机数生成器保留在另一个函数中,因为我将来会添加更多。
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int randRoll();
//Calls the other function
int main()
{
cout << randRoll() << endl;
system("Pause");
}
//Gets the random number
int randRoll()
{
srand(time(0));
for (int x = 1; x <= 1; x ++)
{
cout <<"Your random number is " << 1 +(rand()%4) << endl;
}
return 0;
}
答案 0 :(得分:1)
请改为尝试:
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int randRoll();
// entry point
int main()
{
srand(time(0)); // initialize randomizer
cout << randRoll() << endl;
system("Pause");
return 0;
}
//Gets the random number
int randRoll()
{
auto x = 1 +(rand()%4);
// do something with x here (but don't call cout!)
return static_cast<int>(x);
}
您遇到的问题是您没有返回随机生成的值(我在代码中调用x
)。此外,您试图打印出随机生成的值两次(但不正确)。
答案 1 :(得分:1)
#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
//Gets the random number
int randRoll()
{
return 1 +(rand()%4);
}
//Calls the other function
int main()
{
srand( static_cast<unsigned>( time(0) ) );
for (int x = 1; x <= 7; x ++)
{
cout <<"Your random number is " << randRoll() << endl;
}
}
突出点:
<stdlib.h>
,而不是<cstdlib>
,以避免一些问题。srand
一次。答案 2 :(得分:0)
cout << randRoll() << endl;
打印出该函数的返回值,即0,当你告诉它打印时怎么办?好吧,就像这样,不要求它打印返回值:
randRoll(); // prints some random numbers
cout << endl; // prints newline
然后忽略返回值,如果需要,可以将其更改为void
类型。
请注意,作为一个整体,这样做可能没有意义,但我认为这可以回答你的问题并允许你继续下一个问题......
答案 3 :(得分:0)
嗯,当然它打印了两个数字,你问过它!
// This prints "Your random number is [1-4]\n"
cout <<"Your random number is " << 1 +(rand()%4) << endl;
// This prints "0\n" since "randRoll()" returns 0
cout << randRoll() << endl;
您的主要功能可能只是int main() { randRoll(); }
,因为randRoll
已经打印了一些内容。