从数组中打印出随机字符串

时间:2018-02-20 00:16:48

标签: c++

我对代码的帮助不大。我试图从阵列中打印出一个随机字符串,但不知道如何。提前致谢

#include <iostream>
#include <string>
#include <sstream>
using namespace std;

int main(){

        string name[2] = {"Nao","Shilla"};
        string behaviour[4] = {"recognise","detect","avoid","replace"};
        string position[4] = {"above","below","left","right"};
        string pronoun[3] = {"I","you","they"};
        string object[4] = {"car","person","dog","diamond"};
        string texture[3] ={"smooth","dimpled","rough"};

        cout <<name[0] << " " <<behaviour[0]<< " "<<texture[0] << " " <<object[0] <<endl;
}

2 个答案:

答案 0 :(得分:0)

要从数组生成随机字符串,您可以使用rand()函数生成随机数,方法如下:

array_name[rand() % array_size] // Overflow is not handled here

因此,对于数组name,您可以使用:

name[rand() % 2] // Overflow is not handled here

对于其余的数组也是如此(确保使用srand(time(nullptr));为随机数生成器播种并包含<cstdlib>)。另一种方法是在每个数组上使用std::shuffle(对迭代器使用指针添加),并获取每个混洗数组的第一个元素。

另外,如果您想要更好的随机数生成器,可以使用std::uniform_int_distribution

答案 1 :(得分:0)

最简单的解决方案是使用rand()生成从0到RAND_MAX的伪随机数。要从给定的间隔中获得随机数,您应该使用模运算符%。 例如:output = rand() % (max-min) + min生成从minmax(仅限)的数字。还要记得在代码开头初始化它:srand(time(NULL))

更优雅的解决方案是使用<random>

std::uniform_int_distribution功能