c++ - C++ 如何生成多个随机数?

  显示原文与译文双语对照的内容

目前,这个程序只生成一个随机打印 3次的随机数。 我怎么才能让它打印出三个不同的随机数?

我也很惊讶我不需要ctime头,尽管我使用了 time(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;


}



时间:

目前,这个程序只生成一个随机打印 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;


}



这里是一个现场演示系统。

我也很惊讶我不需要ctime头,尽管我使用了 time(0)

它发生在特定的编译器实现中,并且已经使用的标准标头已经包含了 time(0) 调用所需的ctime 头。

你应该写的安全和便携的方式


#include <ctime>



//...


 std::time(nullptr)


//...



...