You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++如何从数组中随机选取一个字符?

C语言实现石头剪刀布电脑随机出拳功能

实现思路

你已经定义好了存储出拳字符的数组,只需要生成0~2范围的随机整数作为数组下标,就能取到对应的随机出拳字符,具体步骤如下:

步骤1:引入必要头文件

需要用到随机数和时间相关的系统函数,在代码顶部引入两个头文件:

#include <stdlib.h>
#include <time.h>

步骤2:初始化随机数种子

在程序启动/游戏开始的位置仅执行一次种子初始化,不要放在每轮出拳的循环里,否则会出现多次出拳结果相同的问题:

// 用当前时间作为随机数种子,保证每次运行游戏的出拳序列都不同
srand((unsigned int)time(NULL));

步骤3:每轮生成随机出拳

需要电脑出拳的位置,直接用rand()生成随机数取模3得到下标,访问数组即可:

// 每轮调用即可得到随机的'r'/'p'/'s'
char computer_choice = random_array[rand() % 3];

完整可运行示例

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    char random_array[3] = {'r', 'p', 's'};
    // 初始化随机数种子,仅执行一次
    srand((unsigned int)time(NULL));

    // 示例:连续测试5轮出拳
    for(int i=0; i<5; i++) {
        char choice = random_array[rand() % 3];
        printf("第%d轮电脑出拳:%c\n", i+1, choice);
    }
    return 0;
}

注意事项

  • 普通游戏场景下rand() % 3的随机分布完全够用,如果对随机性要求极高,可以替换为更严谨的随机数生成方式,避免取模带来的轻微分布偏差问题。
  • 随机数种子srand()全局只需要调用一次,重复调用会导致随机结果重复。

内容的提问来源于stack exchange,提问作者Saadat khurshid Kitab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:09:04