gpt4 book ai didi

c++ - 显示数组中的 25 个随机数

转载 作者:行者123 更新时间:2023-11-27 23:33:34 25 4
gpt4 key购买 nike

我在 C++ 中有一个包含 100 个元素的数组,因此 v[1], ... ,v[100] 包含数字。我如何显示这个数组中的 25 个随机数?所以我想从此数组中选择 25 个随机位置并显示值。我如何在 C++ 中执行此操作?

谢谢!

    #include <cstdlib>
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include <vector>

using namespace std;
int aleator(int n)
{
return (rand()%n)+1;
}
int main()
{
int r;
int indexes[100]={0};
// const int size=100;
//int a[size];
std::vector<int>v;
srand(time(0));
for (int i=0;i<25;i++)
{
int index = aleator(100);
if (indexes[index] != 0)
{
// try again
i--;
continue;
}
indexes[index] = 1;
cout << v[index] ;
}
cout<<" "<<endl;
system("pause");
return 0;
}

我的想法是我有这段代码,我生成了 100 个随机数。我想要的是一个包含 100 个生成的随机 25 个元素的数组。但我不知道该怎么做

问候

最佳答案

简答题
使用 std::random_shuffle (v.begin(),v.end()) 打乱数组,然后显示前 25 个元素。

长答案
首先,元素将是 v[0]...v[99](C++ 使用基于 0 的索引),而不是 v[1]...v[100]。但是,要回答您的问题,这取决于重复数组元素是否可以接受。如果您不担心重复,则只需重复使用索引 rand()%v.size(),直到您选择了足够数量的索引(在您的问题中为 25 个)。如果重复是 Not Acceptable ,那么您需要打乱数组(通过随机交换元素),然后显示 N 个元素的第一个(或最后一个,或任何连续区域)(在本例中 N=25)。您可以使用 std::random_shuffle打乱数组。这为您完成了大部分工作。完成后,只需显示 25 个元素。

关于c++ - 显示数组中的 25 个随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2964266/

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