我可以创建一个循环,用六个随机数填充100个数组

时间:2018-11-08 09:44:19

标签: c++ arrays loops

所以直到现在,我仍然知道如何创建一个仅用随机数填充一个数组的循环。但是我可以创建一个用随机数填充随机数数组的循环。在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;
}

2 个答案:

答案 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功能生成随机数。