C++ 随机数生成器以升序输出数字
首先,我是一个早期的初学者程序员,希望得到一些帮助 我已经编写了以下代码,根据我测试的结果生成:C++ 随机数生成器以升序输出数字,c++,random,integer,srand,time.h,C++,Random,Integer,Srand,Time.h,首先,我是一个早期的初学者程序员,希望得到一些帮助 我已经编写了以下代码,根据我测试的结果生成: 5个介于1和39之间的随机数//num1gen到num5gen-例如A组 1个介于1和14之间的随机数//Thunderball-例如B组 我只想告诉你,如果你把A中的数字作为向量来创建,那么有一个带有sort的算法头,比如: #include <vector> #include <algorithm> int main() { std::vector<i
- 5个介于1和39之间的随机数//num1gen到num5gen-例如A组
- 1个介于1和14之间的随机数//Thunderball-例如B组
我只想告诉你,如果你把A中的数字作为向量来创建,那么有一个带有sort的算法头,比如:
#include <vector>
#include <algorithm>
int main() {
std::vector<int> numA(5);
srand( time(NULL) );
for( unsigned int i(0); i < numA.size(); ++i )
numA[i] = (rand()%49+1);
//After you create the vector and do your test that they're not equal
std::sort(numA.begin(), numA.end());
return 0;
}
#包括
#包括
int main(){
std::载体numA(5);
srand(时间(空));
for(无符号整数i(0);i
std::sort()
包含在#include
标题中 #包括
#include <random>
#include <vector>
#include <algorithm>
#include <numeric>
int main()
{
std::vector<unsigned> balls(39);
std::iota(balls.begin(), balls.end(), 1);
std::shuffle (foo.begin(), foo.end(), std::mt19937(std::random_devic{}()));
balls.resize(5);
std::sort(balls.begin(), balls.end());
std::cout << "Balls: "
std::copy(balls.begin(), balls.end(), std::ostream_iterator<unsigned>{std::cout," "})
}
#包括
#包括
#包括
int main()
{
向量球(39);
std::iota(balls.begin(),balls.end(),1);
std::shuffle(foo.begin()、foo.end()、std::mt19937(std::random_devic{}());
调整大小(5);
排序(balls.begin(),balls.end());
问题是什么?不要使用srand()
在循环中。使用a存储所有数字,然后对其进行排序。只需将数字读入数组或std::vector
并在输出前对其进行排序。如果我将这些数字读入数组,我是否仍能将生成的随机数保留在其唯一整数名中?即num1gen、num2gen等。仍保留数字。由于我的程序的其余部分正在检查这些内存名称位置。谢谢你,我将尝试它!但是,这会将生成的随机数放入num1gen、num2 gen……到num5gen吗?因为要使它与我编写的程序的其余部分兼容,我需要将生成的这些数字存储在tho中se内存位置。由于它们在整个过程中被多次引用和读取。@Mikericson-不,不会。您是否根据该要求编辑了原始问题?在向量中没有排序方法。
。您必须使用无效排序(先使用RandomAccessIterator,后使用RandomAccessIterator)
我没有编辑问题的任何内容,只有代码的缩进。Thanks@TriHard8将numA.sort(numA.begin(),numA.end());
更改为std::sort(numA.begin(),numA.end()){ /CODE〉我已经尝试过并接收了这个消息。{IFNDEF,CXX0xXWARIN HYEXY定义了xCX0xxWalnIn h 1,如果这个文件需要编译器和库支持的ISO C++ 2011标准。这个支持是当前实验的,必须用-STD= C++ 11或-STD= GNU++11编译器选项来启用。f@MikeEricson我使用了C++11,所以您必须按照消息中的说明打开C++11支持。不幸的是,我找不到该选项。我使用的是代码块。感谢您的回复。您不会厌倦在代码中每隔2厘米键入std::
?
#include <random>
#include <vector>
#include <algorithm>
#include <numeric>
int main()
{
std::vector<unsigned> balls(39);
std::iota(balls.begin(), balls.end(), 1);
std::shuffle (foo.begin(), foo.end(), std::mt19937(std::random_devic{}()));
balls.resize(5);
std::sort(balls.begin(), balls.end());
std::cout << "Balls: "
std::copy(balls.begin(), balls.end(), std::ostream_iterator<unsigned>{std::cout," "})
}