C ++& Qt:数组区域中的随机字符串

时间:2015-06-22 15:01:56

标签: c++ arrays string qt random

在我的小Qt应用程序中,我想在单击按钮后从数组中选择一个随机字符串。我读过许多帖子,但对我来说没什么用。

所以在我的插槽中有一个包含多个字符串的数组。我还实现了<string>, <time.h>和srand。

#include "smashrandom.h"
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <string>

SmashRandom::SmashRandom(QWidget *parent)
    : QWidget(parent)
{
    // shortened version
    connect(button, SIGNAL(clicked()), this, SLOT(Randomizer()));
}

void SmashRandom::Randomizer()
{

    srand((unsigned int)time(NULL));

    std::string characters[6] = {"Mario", "Luigi", "Peach", "Yoshi", "Pac Man", "Sonic"};
}

如何从我的数组中选择一个随机字符串&#34;字符&#34;?通常我使用rand()%表示int或double数组,但在这种情况下我不知道如何将它用于随机字符串。

除此之外,还可以从数组内的区域中选择一个随机字符串吗?例如,我只想要一个从Mario到Yoshi的随机字符串,所以Pac Man和Sonic甚至不能出现?

我希望你能理解我的问题并提前感谢。 :)

1 个答案:

答案 0 :(得分:1)

您应该使用random标题。

#include <random>

std::default_random_engine generator;
std::uniform_int_distribution dist(0, 5);
int StringIndex = dist(generator);

std::string ChosenString = characters[StringIndex];

以上内容将为您的数组生成一个随机索引。

如果要限制范围,请更改dist的构造函数,例如(dist(0,2)只允许选择Mario,L​​uigi和Peach,索引0 1和2)。 / p>