目前,此程序仅生成一个随机数,打印3次。如何获得打印三个不同随机数的信息?
我也很惊讶,即使我使用了time(0),我也不需要ctime标头。
//This program generates three random numbers.
#include <iostream>
#include <cstdlib>
using std::endl;
using std::cout;
int main() {
unsigned number;
srand(time(0));
number = rand() % 10 + 1;
cout << number << " ";
cout << number << " ";
cout << number << endl;
return 0;
}
答案 0 :(得分:4)
目前,此程序仅生成一个随机数,打印3次。如何获得打印三个不同随机数的信息?
您似乎有严重的误解是什么
number = rand() % 10 + 1;
确实如此。
此时您要完成任务
rand() % 10 + 1
对number
的值进行评估,并 一次 将其存储到上述行中的变量中。
对number
的进一步访问将不再触发该评估。
如果您想在每次访问特定的“变量” 时进行评估,则可能要使用 lambda函数:
#include <cstdlib>
#include <ctime>
#include <iostream>
int main() {
std::srand(std::time(nullptr));
auto number = []() {
return std::rand() % 10 + 1;
};
std::cout << number() << " ";
std::cout << number() << " ";
std::cout << number() << std::endl;
}
这里是live demo
同样令我惊讶的是,即使我使用了
time(0)
,我也不需要ctime标头。
在特定的编译器实现中,您很幸运,而且其中一个已经使用的标准标头之一已经包含了ctime
调用所需的time(0)
标头。
您宁愿编写的安全,便携的方式
#include <ctime>
// ...
std::time(nullptr)
// ...
答案 1 :(得分:3)
您只需设置一次number
,它将一直是您分配给它的随机数,直到您为其分配其他内容,例如来自rand()
的另一个随机数
/This program generates three random numbers.
#include <iostream>
#include <cstdlib>
using std::endl;
using std::cout;
int main()
{
unsigned number;
srand(time(0));
number = rand() % 10 + 1;
cout << number << " ";
number = rand() % 10 + 1;
cout << number << " ";
number = rand() % 10 + 1;
cout << number << endl;
return 0;
}
答案 2 :(得分:2)
C ++中的赋值不是每次使用变量时都会应用的公式。因此,当您这样做时:
number = rand() % 10 + 1;
您可以在程序中出现的位置,为number
一次分配一个值。
如果要获取更多随机数,则需要呼叫rand
并多次分配给number
。
number = rand() % 10 + 1;
cout << number << " ";
number = rand() % 10 + 1;
cout << number << " ";
number = rand() % 10 + 1;
cout << number << endl;
答案 3 :(得分:0)
解决方案:
#include <iostream>
#include <cstdlib>
using std::endl;
using std::cout;
int main()
{
unsigned number;
srand(time(0));
number = rand() % 10 + 1;
cout << number << " ";
number = rand() % 10 + 1;
cout << number << " ";
number = rand() % 10 + 1;
cout << number << endl;
return 0;
}
您的代码段随机返回三次的原因是
//This program generates three random numbers.
#include <iostream>
#include <cstdlib>
using std::endl;
using std::cout;
int main()
{
unsigned number;
srand(time(0));
number = rand() % 10 + 1;
cout << number << " ";
cout << number << " ";
cout << number << endl;
return 0;
}
“随机数”的值仅分配了一次,并且将保持不变直到再次分配。
希望你对我没错;)