gpt4 book ai didi

c++ - 查询使用随机整数作为 vector 的大小

转载 作者:行者123 更新时间:2023-11-28 04:20:36 28 4
gpt4 key购买 nike

所以我很难记住如何在 C++ 中调用随机数。我不确定该怎么做,所以如果有人能提醒我那太棒了。我正在尝试制作一个随机大小的 vector ,其中填充了随机整数。这是我的以下代码:

#include <cstdlib>
#include <iostream>
#include <vector>
int main()
{
int randSize = rand();
int sum = 0;
int product = 1;
std::vector<int> numbers(randSize);
int output;
for (int i = 0; i < numbers.size(); i++)
{
int randNum = rand();
numbers[i] = randNum;
output = numbers[i]&2;
if (output == 0)
{
sum += numbers[i];
}
else
{
product = product * numbers[i];
}




}

std::cout << "The sum of even numbers is " << sum << "\n";
std::cout << "The product of off numbers is " << product << "\n";



}

最佳答案

正如评论中已经指出的那样,best forget about rand() 并使用 <random> 中标准库提供的工具反而。例如:

std::vector<int> makeRandomBunch(int min, int max, std::size_t min_elements, std::size_t max_elements)
{
std::mt19937 generator(42);

std::uniform_int_distribution<std::size_t> size_distribution(min_elements, max_elements);
std::size_t num_elements = size_distribution(generator);

std::vector<int> data;
data.reserve(num_elements);

std::uniform_int_distribution<int> element_distribution(min, max);
std::generate_n(std::back_inserter(data), num_elements, [&](){ return element_distribution(generator); });

return data;
}

在这里,我们使用 mt19937 伪随机数生成器(不要被名字吓到,它只是以 the algorithm it uses 命名)以值 42 作为随机源作为种子。一个 std::uniform_int_distribution 可用于将随机生成器提供的随机性整形为从给定范围采样的随机整数。我们使用 uniform_int_distribution随机选择 elements_min 之间的尺码和 elements_max对于我们的载体和reserve我们 vector 中的空间量。我们使用另一个 uniform_int_distribution我们将选择我们的 int来自(介于 minmax 之间)的元素。最后,我们使用 std::generate_n 结合 back_inserter 用元素填充我们的 vector 并返回 vector …

live example here

关于c++ - 查询使用随机整数作为 vector 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55526710/

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