有人可以帮助我找出一种从具有依次顺序的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);