所以直到现在,我仍然知道如何创建一个仅用随机数填充一个数组的循环。但是我可以创建一个用随机数填充随机数数组的循环。在C ++中有可能并且很难做到吗? (谢谢您的回答,对向量进行了一些研究并弄清楚了。
我还有一个问题。我有一个菜单为1到4的程序。1.在现场创建带有6个随机数的票证并将其保存到数组中。是否可以创建一个循环,每次单击都会创建一个具有新值的新数组,而另一个保持不变。澄清一下:我有一个array [5] = {1,2,3,4,5}。我想要在单击1时保存此数组,并创建一个新数组,该数组将容纳新值,依此类推。另外,如果它们可以跟在后面的名称,例如array1,array2等。我只允许使用rand()函数。
这是我现在的代码!
srand(time(NULL));
for (int i = 0; i < sizeOfArray; i++) {
lottoArr[i] = rand() % 100 + 1;
cout << lottoArr[i] << endl;
}
答案 0 :(得分:0)
这是对三个数组进行处理的方法(我用0到100之间的随机数填充它们)
int tab1 [10];
int tab2 [10];
int tab3 [10];
for(int i = 0; i <6; i ++){
tab1 [i] = rand()%100;
tab2 [i] = rand()%100;
tab3 [i] = rand()%100;
}
现在您必须根据情况进行调整,例如,可以使一个函数接受数组并用随机数填充它,然后在要填充的数组上调用它
答案 1 :(得分:0)
如果要具有随机数的数组,则必须将它们存储在可调整大小的容器(如矢量)中,该容器包含具有六个元素的数组。使用此随机数调整此向量的大小,然后对其进行迭代并添加随机数
#include <array>
#include <random>
namespace
{
constexpr auto NumberOfArrayElements = 6;
constexpr auto MaximumNumberOfArrays = 100;
template<class VectorT>
void resize_randomly(VectorT& vector)
{
std::random_device random_device;
std::mt19937 engine(random_device());
std::uniform_int_distribution<VectorT::size_type>
distribution(0, MaximumNumberOfArrays > vector.max_size() ? vector.max_size() : MaximumNumberOfArrays);
vector.resize(distribution(engine));
}
void fill_randomly(std::vector<std::array<int, NumberOfArrayElements>>& vector_of_arrays)
{
std::random_device random_device;
std::mt19937 engine(random_device());
std::uniform_int_distribution<int> distribution(std::numeric_limits<int>::lowest(), std::numeric_limits<int>::max());
for (auto& array : vector_of_arrays)
std::generate(array.begin(), array.end(), [&distribution, &engine]() { return distribution(engine); });
}
}
auto main() -> int
{
std::vector<std::array<int, NumberOfArrayElements>> vector_of_arrays;
resize_randomly(vector_of_arrays);
fill_randomly(vector_of_arrays);
}
使用C ++ 11 random功能生成随机数。