該程序產生的隨機串的3倍C++代碼結果輸出不同,這取決於執行方法調試VS運行
在蝕與調試「步驟爲」
結果當結果是獨特的,不同的是相同的字符串時,3次剛剛執行
爲什麼結果會因執行方法,調試與編譯運行不同而不同?
#include <iostream>
using std::cout;
using std::endl;
#include <string>
using std::string;
#include <ctime>
#include <cstdlib>
string generaterandomstring(int length){
int i, x, alphabetsize, asciioffset;
string s1;
alphabetsize = 26; // size of all lower case letters
asciioffset = 97; // lower case letters start at 97
srand (time(NULL));
for (i = 0; i < length; i++)
{
//generate random number
x = rand() % alphabetsize + asciioffset;
cout << "x: " << x;
//get a letter
cout << " char: " << char(x);
//append it to string
s1 = s1 + char(x);
cout << " s1: " << s1 << endl;
}
return s1;
}
int main() {
int i;
string s1;
int length = 3;
srand (time(NULL));
for (i = 0; i < length; i++)
{
s1 = generaterandomstring(length);
cout << "i is: " << i << " from main s1: " << s1 << endl;
cout << rand() % 10 << endl;
}
cout << "!The End!" << endl; // prints !!!Hello World!!!
return 0;
}
查找一個「種子」是什麼,你應該如何使用它。 –
你錯誤地使用了srand,這就是爲什麼。 – Shark
無關:使用''a''作爲'asciioffset'更具可讀性。 –