我对代码的帮助不大。我试图从阵列中打印出一个随机字符串,但不知道如何。提前致谢
#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;
}
答案 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
生成从min
到max
(仅限)的数字。还要记得在代码开头初始化它:srand(time(NULL))
更优雅的解决方案是使用<random>
std::uniform_int_distribution
功能