如何使用rand()
生成25位数的随机数并将其存储为字符串?
using namespace std;
int main(int argc, char **argv)
{
srand(time(0));
char arr[26] = {0};
for(int i = 0; i < 26; i++){
arr[i] = rand() % 10+ '0';
}
for(int i = 0; i < 25; i++){
cout << arr[i] << " ";
}
return 0;
}
每次运行程序时,此代码会生成25个随机数。
同样,我需要生成一个25位数字并将其存储在一个数组中。
答案 0 :(得分:2)
声明一个包含二十六个字符的数组。在从零到二十四(包括)的循环中,生成'0'
和'9'
之间的随机值,并添加到数组中。使用字符串终止符终止数组。现在你有一个带有25个随机十进制数字的字符串。
对于实际的随机数生成,我建议您查看新的C ++ 11 random number functionality,尤其是std::uniform_int_distribution
。
将其与std::generate
中的standard algorithm library功能相结合,您只需几行即可完成。
答案 1 :(得分:0)
这是我使用的逻辑,
int getRandom()
{
const int size = 10;
static int iBuff[10] = {0,1,2,3,4,5,6,7,8,9};
static int iPivot = 0;
if (iPivot >= size)
{
for(iPivot = 0; iPivot<size; iPivot++)
iBuff[iPivot] = iPivot;
iPivot = 0;
}
int iPos = rand()%(size-iPivot);
int rand = iBuff[iPos+iPivot];
//
// swap values at iPos and iPivot
//
int temp = iBuff[iPivot];
iBuff[iPivot] = iBuff[iPos+iPivot];
iBuff[iPos+iPivot] = temp;
iPivot++;
return rand;
}
int main ()
{
srand(time(NULL));
for (int iLoop=0; iLoop<25; iLoop++)
cout<<getRandom()<<endl;
getchar();
return 0;
}
答案 2 :(得分:0)
srand只初始化了伪随机数生成器。
您可能想要这样做:
char array[26];
for(int x = 0; x < 26 ; x++)
array[x] = rand()%10 + '0';
array[25] = '\0'