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

Posted

技术标签:

【中文标题】我可以创建一个用六个随机数填充 100 个数组的循环吗?【英文标题】:Can I create a loop which fills 100 arrays with six random numbers [closed] 【发布时间】:2018-11-08 09:44:19 【问题描述】:

我知道如何创建一个只用随机数填充一个数组的循环。但是我可以创建一个循环,用随机数填充随机数的数组。在 C++ 中是否可行并且很难做到? (感谢您的回答,对向量进行了一些研究并弄清楚了。

我还有一个问题。我有一个程序,菜单从 1 到 4。在 1. 现场创建一张带有 6 个随机数的票并将它们保存到一个数组中。是否可以使用它创建一个循环,每次单击都会创建一个具有新值的新数组,而另一个保持不变。澄清一下:我有一个数组 [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;

【问题讨论】:

是的,这在 C++ 中是可能的。不,这并不难。 在您的标题中,您询问了大约 100 个数组,但在帖子中您提到了随机数量的数组。是哪一个? 您是否要在总共 100 个数组中填充随机数? 所以是的,我的确切问题是针对 10000 个数组,但我要求提供随机数。你会回答我的问题并不重要,因为我认为它只会在一个地方改变。 不要编辑问题来添加另一个问题。 【参考方案1】:

如果您想拥有随机数量的数组,您必须将它们存储在一个可调整大小的容器中,例如一个向量,其中包含具有六个元素的数组。用这个随机数调整这个向量的大小,然后遍历它并添加随机数

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

【讨论】:

【参考方案2】:

这是对三个数组执行此操作的方法(我用 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; 

现在您必须针对您的情况进行调整,例如,您可以创建一个函数,该函数接受一个数组并用随机数填充它,然后在要填充的数组上调用它

【讨论】:

以上是关于我可以创建一个用六个随机数填充 100 个数组的循环吗?的主要内容,如果未能解决你的问题,请参考以下文章

面试官问单表数据量大一定要分库分表吗?我们用六个字和十张图回答

JS代码,创建一个长度为20的数组,并输出1到100任意的20个数(最好写一下注释)

打印 2 个数组的行和列的总和

前向填充位数组的最有效方法

成绩计算实例

钛的范围问题