gpt4 book ai didi

c++ - 在 C++ 中生成和存储随机数组

转载 作者:行者123 更新时间:2023-11-30 03:22:56 27 4
gpt4 key购买 nike

我正在开发一个程序,它将初始数组作为输入,然后从初始数组中随机生成 10 个随机数组。

我已经编写了一个函数来从初始数组生成一个随机数组。

但是,我无法开发代码在主函数中调用此函数并生成 10 个这样的随机数组。我还将使用这 10 个随机生成的数组在主函数中进行进一步计算。

由于我目前对C++的了解有限,我不知道使用vector进行动态分配。如果有人能指导一下main函数中要使用的代码,那将是非常有帮助的。

此处 int initial[] 是使用 int *newparents() 函数生成其他 10 个随机数组的第一个数组。当在 main 中调用 newparents() 函数时,它会返回一个随机打乱的数组。

我会请求你的帮助,通过调用 newparents() 函数在主函数中生成 10 个随机数组,然后存储它们以供进一步使用。

代码:

int initial[] =
{ 10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200 };
int size = sizeof(initial) / sizeof(initial[0]);

int *newparents()
{
int *pt = new int[size];
random_shuffle(&initial[0], &initial[size]);
for (unsigned i = 0; i<size; i++)
{
pt[i] = initial[i];
}
return pt;
}

int main()
{
int *p;
p = newparents();
cout << "p1=" << " ";
for (int i = 0; i<size; i++)
{
cout << *(p + i) << " ";
}
return 0;
}

感谢您的帮助。

最佳答案

使用 std::vector 的简单方法:

#include <iostream>
#include <vector>
#include <algorithm>

std::vector< std::vector<int> >
GenerateRandomArrays( std::vector<int> const & inInitialArray, int inNumberOfArrays)
{
std::vector<std::vector<int> > generatedArrays;
std::vector<int> tempArray(inInitialArray);
for (int i = 0; i < inNumberOfArrays; i++)
{
std::random_shuffle(tempArray.begin(), tempArray.end());
generatedArrays.push_back(tempArray);
}
return generatedArrays;
}

int main() {
// Creates the initial array.
std::vector<int> initial{ 10,20,30,40,50 };
auto blah = GenerateRandomArrays(initial, 10);
return 0;
}

输出:

50  20  40  30  10
50 40 30 10 20
20 10 30 50 40
30 40 20 10 50
30 50 20 10 40
20 50 10 40 30
50 30 20 10 40
30 40 20 10 50
20 10 50 40 30
20 50 10 40 30

注意:我正在创建一个新的 tempArray 只是因为我认为您不想更改 initial vector 。如果这不是您的情况,那么您可以直接打乱 initial 数组本身并将其添加到 vector 的 vector 中。

关于c++ - 在 C++ 中生成和存储随机数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50757561/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com