小编Jim*_*lle的帖子

关于C++中的随机数

我是C++的新手.我正在关注一个免费的在线课程,我必须要做的一件事是创建一个可以扰乱字符串字符的程序.

所以,我创建了一个函数,它接收单词作为参数并返回加扰的单词.包含ctime和cstdlib并且srand(time(0)); 在主要宣布.

基本上,函数看起来像这样:

std::string mixingWord(std::string baseWord)
{
std::string mixWord;
int pos(0);

for (int i = baseWord.length; i >= 0; i--)
{
  if (i != 0)
  {
    pos = rand() % i;
    mixWord += baseWord[pos];
    baseWord.erase(pos,1);
  }
  else
  {
    mixWord += baseWord[0];
  }
}

return mixWord;
}
Run Code Online (Sandbox Code Playgroud)

它运作得很好.但正确的解决方案是

std::string mixingWord(std::string baseWord)
{
std::string mixWord;
int pos(0);

while (baseWord.size() != 0)
{
    pos = rand() % baseWord.size();
    mixWord += baseWord[pos];
    baseWord.erase(pos, 1);
}

return mixWord;
}
Run Code Online (Sandbox Code Playgroud)

它也可以正常工作.我的问题是:为什么解决方案有效?根据我的理解,这个:

rand() % value
Run Code Online (Sandbox Code Playgroud)

给出介于0和给定值之间的值. …

c++ random for-loop numbers while-loop

1
推荐指数
1
解决办法
88
查看次数

标签 统计

c++ ×1

for-loop ×1

numbers ×1

random ×1

while-loop ×1