You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

请求实现生成1-100随机数遇99停止并统计尝试次数的代码

简易解决方案:用do-while循环生成随机数直到命中99

没问题,这是个很典型的循环+随机数场景,我给你写个清晰易懂的C语言实现(毕竟rand()函数最常用在C/C++环境里),逻辑简单还容易扩展:

核心代码实现

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

int main() {
    // 初始化随机数种子,确保每次运行生成的随机序列不同
    srand(time(NULL));
    
    int count = 0;
    int random_num;
    
    // do-while循环:至少执行一次尝试,完美贴合"必须尝试直到命中"的需求
    do {
        random_num = rand() % 100 + 1; // 生成1-100的随机数
        count++; // 每次尝试计数+1
    } while (random_num != 99); // 不是99就继续循环
    
    // 输出结果
    printf("共%d次尝试命中数字99\n", count);
    return 0;
}

关键细节拆解

  • 随机数种子初始化srand(time(NULL))是必不可少的一步——它用当前时间作为种子,避免每次运行程序都生成完全相同的随机数序列。要是去掉这行,你每次运行都会得到一模一样的尝试次数,完全失去了随机的意义。
  • 生成1-100的随机数rand() % 100会得到0-99的整数,加1后就刚好落在1-100的范围内,完美匹配你的需求。
  • do-while的优势:因为我们至少需要尝试一次才能得到随机数,do-while会先执行一次循环体再判断条件,比while循环更贴合这个场景(用while的话,得先手动生成一次随机数再进循环,会多一行冗余代码)。

用while循环的替代写法

如果你更习惯while循环的逻辑,也可以这么写,效果完全一样:

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

int main() {
    srand(time(NULL));
    int count = 0;
    int random_num;
    
    while (1) { // 先开无限循环,命中目标再跳出
        random_num = rand() % 100 + 1;
        count++;
        if (random_num == 99) {
            break; // 命中99,终止循环
        }
    }
    
    printf("共%d次尝试命中数字99\n", count);
    return 0;
}

两种写法都能搞定需求,选你看着顺眼的就行~

内容的提问来源于stack exchange,提问作者Palmoz

火山引擎 最新活动