如何在c ++中选择随机字母

use*_*686 2 c++ arrays random ctime

嗨,我正在为我的c ++课程中的最后一个刽子手项目工作.我已经完成了大部分工作,但我想做到这一点,所以玩家可以选择在单人模式下对抗电脑对手.我尝试做类似97 + rand()%123之类的东西,然后将数字转换为字符,但我一直在变得怪异的字符,比如颠倒了我检查一下,看看我是否遗漏了一些东西,但我有正确的指令,我加入了一个srand .我所做的简化版看起来像这样

#include <iostream>
#include <fstream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <ctime>
using namespace std;

int main(){
    char cch;
    char ch; 
    unsigned seed= time(0)
    srand(seed)
    cch=97rand()%123;
    ch=cch;
    cout<<"computer chose "<< ch<<endl;
}
Run Code Online (Sandbox Code Playgroud)

请注意,我没有包括我的项目的所有内容

bea*_*ode 9

使用

cch = 'a' + rand()%26;
Run Code Online (Sandbox Code Playgroud)

这将为'a'添加一个随机数(int等于97,但使用该数字会使代码的可读性降低),请记住,'a' == 97因为C和C++实际上并不关心您的数据类型.

因此,如果将其存储为char,则将其视为char


小智 5

看一下ASCII表,注意有效字符在 97 到 122 和 65 到 90 之间。我认为你需要小写字母。您可以选择一个随机小写字母,如下所示:

char x = 97 + rand() % 26;
Run Code Online (Sandbox Code Playgroud)


Mar*_*utt 5

您可能会发现定义一个包含所有您想要选择的有效字符的字符数组更容易,然后在 0 和数组中存储的字符数之间随机选择一个字符;

char letters[] = "abcdefghijklmnopqrstuvwxyz";
char x = letters[rand() % 26];
Run Code Online (Sandbox Code Playgroud)

它可能没有那么高效,但它使您的意图更加清晰。

此外,如果您需要修改某些字符更频繁出现的概率,您可以通过多次添加相同的字符来实现。