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

标签 c++ arrays

我在 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/

相关文章:

java - 如何比较二维(或嵌套)Java 数组?

c++ - 函数说明符

java - 命令设计模式

php - 如何从 Codeigniter 中的输入文件获取字段名称

javascript - 从轴坐标动态创建具有整数坐标的有限 n 维坐标系

c++ - 模板类中的数组定义

c++ - 栈帧问题 : Java vs C++

c++ - "Illegal block entry"以及 yaml-cpp 中的 YAML 怪物示例

c++ - 如何从 NTFS 索引号获取文件路径?

c++ - 在C++/Unreal Engine 4中访问不同类中的静态变量