C 从向量的子集返回一个随机值



有人可以帮助我找出一种从具有依次顺序的n值的向量返回值的方法。返回值必须在集合的上半部分。

例如,

如果具有包含以下整数的向量:{1,2,3。4,5,6}

从{4,5,6}返回一个随机整数。我很难过!

最终目标是创建一个"加权模具",其中卷的值返回更高的值。我的解决方案是上述向量的使用。

void LoadedDie::loadedRoll(int numberOfSides)
{
    vector<int> diceSides(numberOfSides+1); 

    for (int index = 1; index < numberOfSides+1; index ++)
    {
        diceSides[index]=index; 
    }

    for (int index=1; index < numberOfSides+1; index ++)
    {
        cout << diceSides[index]; 
    }
}

所以我在这一点上创建了骰子,但是无法弄清楚如何从向量的后半部分获取随机值。

您可以在一个范围内生成一个随机整数,并使用下标操作员访问向量。

int max = yourVector.size()-1; //-1 to stay in range
int min = max/2;
int randIndex = min + (rand() % (int)(max - min + 1));
yourVector[randIndex]; // this is a random int in your vector

这是有些偏见的,因此您可以将以下内容用于不受欢迎的:

#include <random>
int max = yourVector.size()-1; //-1 to stay in range
int min = max/2;
std::random_device seed;     // initialise a seed once
std::mt19937 numberGen(seed()); 
std::uniform_int_distribution<int> gen(min,max); 
int randIndex = gen(numberGen);
yourVector[randIndex]; // this is a random int in your vector

编辑

所建议的,您可以使用std :: vector中的.AT((函数安全:

yourVector.at(randIndex);

最新更新