如何获取数组中的一些随机元素

时间:2015-02-17 11:17:28

标签: c++ arrays random

Hnode函数中,我想从包含50个元素的SNode函数的输出中随机选择40个元素。但是我在SNode函数中遇到了这个错误:

'int[int]' for array subscript

我在SNode中调用了Hnode函数,我想使用该函数的输出。

int HNode::database(int chunk_var)
{
    SNode::database(chunk_var);
    size=40;
    chunk_var = chunk_var[ rand() % size ]; // Here i got error
    return chunk_var ;
}

Snode应该创建一个包含50个元素的数组:

int  SNode::database(int chunk_var)
{
    int array[50];
    srand ( time(0) );
    for(int j = 0; j<50 ;j++)
    {
        int myrand = rand() % 2 ;
        myrand = myrand & 0x3ff;
        array[j]= myrand;
        chunk_var = array[j];
    }
    return chunk_var;
}

我怎样才能解决这个错误?

2 个答案:

答案 0 :(得分:0)

int HNode::database(int chunk_var)

这里chunk_var是一个整数。您无法访问int的索引。如果要通过索引访问它,chunk_var必须是一个Integer数组。

实施例。

int chunk_var_arr[] = {1,2,3};
HNode::database(chunk_var_arr) //function call
int HNode::database(int* chunk_var) //function declaration

答案 1 :(得分:0)

我的猜测是你正在尝试做这样的事情:

std::vector<int> SNode::database(int chunk_var)
{
    srand ( time(0) );      // do this atop main() instead!

    std::vector<int> result;

    for (int j = 0; j < chunk_var; j++)
    {
        int myrand = rand() % 2 ;
        myrand = myrand & 0x3ff;   // useless, after % it's 0 or 1 anyway
        result.push_back(myrand); 
    }
    return result;
}

int HNode::database(int chunk_var)
{
    std::vector<int> a = SNode::database(chunk_var);
    return a[ rand() % chunk_var ]; 
}

你显然已经超出了你的深度,并且应该学会在尝试编写类成员函数之前使用std::vector<>,函数参数,for循环等编写简单的独立函数。