我是C ++新手。我想生成一个随机的字符串序列,以便在我的程序中使用。它大部分时间都可以工作,但偶尔会出现行为错误并从计算机内存中转储随机字符串。我做了什么愚蠢的错误(如果有的话)?
代码如下:
#include <iostream>
#include <ctime> // Needed for the true randomization
#include <cstdlib>
#include <string>
using namespace std;
int main ()
{
string holder[] = {"A", "B", "C", "D", "E"};
int xRan;
srand(time(0)); // This will ensure a really randomized number by help of time.
xRan=rand()%6+1;
xRan--;
cout << "Value of xRan is: " << xRan << " value is " << holder[xRan] << endl;
return 0;
}
答案 0 :(得分:2)
xRan=rand()%6+1;
xRan--;
将生成0到5之间的随机数。您的有效数组索引为0到4。
答案 1 :(得分:2)
您的xRan计算为您提供1到6之间的数字。您的数组有5个元素,编号为0到4。
将xRan=rand() % 6 + 1;
更改为xRan=rand() % 5;
,然后删除您递减xRan
的下一行。这将为您提供0到4之间的数字,这就是您想要的。
答案 2 :(得分:0)
holder
中你没有足够的元素(你需要6个)。变化:
string holder[] = {"A", "B", "C", "D", "E"};
为:
string holder[] = {"A", "B", "C", "D", "E", "F"};
另请注意,您在此处有一些冗余:
xRan=rand()%6+1; // xRan = 1..6
xRan--; // xRan = 0..5
您可以将其更改为:
xRan=rand()%6; // xRan = 0..5