生成随机大写和小写字母的逻辑

Teo*_*yan 1 c++ random

我正在尝试同时生成一个包含大写和小写字母的数组.

我理解生成两个单独的字母案例背后的逻辑.

rand() % 26 + 65 // generate all the uppercase letter
Run Code Online (Sandbox Code Playgroud)

rand() % 26 + 97 // generate all the lowercase letter
Run Code Online (Sandbox Code Playgroud)

我试着谷歌搜索如何一起生成它们,这就是我得到的.

rand() % 26 + 65 + rand() % 2 * 32 // generate both upper and lowercase letter
Run Code Online (Sandbox Code Playgroud)

不幸的是,他们并没有完全解释其背后的逻辑,我不想盲目地将其复制并粘贴到我的作业中.rand() % 2 * 32在将第二个添加rand()到第一个中时,一直在寻找高低的逻辑rand().

任何帮助将不胜感激.

NPE*_*NPE 7

观察到和32之间的差异,即大写和小写字母的ASCII代码之间的差异.6597

现在让我们rand() % 26 + 65 + rand() % 2 * 32分开:

  • rand() % 26 + 65 生成一个随机的大写字母;
  • rand() % 2 * 32生成0或者32,从而将大写字母转换为小写字母的一半.

重写此表达式的另一种更详细的方法是:

letter = rand() % 26 + 65;
if (rand() % 2) {
  letter += 32;
}
Run Code Online (Sandbox Code Playgroud)

  • @TeoChuenWeiBryan阅读有关模运算符`%`的更多信息. (2认同)