C 教程

C 教程 C 语言简介 C 下载安装和环境配置 C 快速入门 C 语法 C 输出 C 注释 C 变量 C 数据类型 C 常量 C 运算符 C 布尔值 C If...Else 语句 C Switch 语句 C While 循环 C For 循环 C Break/Continue 语句 C 数组 C 字符串 C 用户输入 C 内存地址 C 指针

C 函数

C 函数 C 函数参数 C 作用域 C 函数声明 C 递归 C 数学函数

C 文件

C 创建文件 C 写入文件 C 读取文件

C 结构体

C 结构体 C 嵌套结构体 C 结构体和指针 C 联合体 C typedef

C 枚举

C 枚举

C 内存

C 内存管理

C 错误

C 错误 C 调试 C 空值 C 错误处理 C 输入验证

C 更多

C 日期 C 随机数 C 宏 C 代码组织 C 存储类 C 位运算符 C 固定宽度整数

C 项目

C 项目

C 参考资料

C 参考资料 C 关键词 C <stdio.h> C <stdlib.h> C <string.h> C <math.h> C <ctype.h> C <time.h>

C 标准库参考

C 标准库 - 参考手册 C 标准库 - <assert.h> C 标准库 - <ctype.h> C 标准库 - <errno.h> C 标准库 - <float.h> C 标准库 - <limits.h> C 标准库 - <locale.h> C 标准库 - <math.h> C 标准库 - <setjmp.h> C 标准库 - <signal.h> C 标准库 - <stdarg.h> C 标准库 - <stddef.h> C 标准库 - <stdio.h> C 标准库 - <stdlib.h> C 标准库 - <string.h> C 标准库 - <time.h>

C 实例

C 语言实例 C 经典100例 C 编译器 C 测验


C 随机数

随机数

在 C 语言中,你可以使用 rand() 函数生成随机数,该函数位于 <stdlib.h> 库中。

默认情况下,每次运行程序时,rand() 都会生成相同的数字序列。 为了在每次运行中获得不同的结果,您还可以使用 srand() 设置一个"起点"(称为 种子)。 既然你刚刚学习了日期和时间,现在你可以使用当前时间作为种子(因为它总是在变化)。 为此,您需要在程序中包含 <time.h>。


基本随机数

函数 rand() 返回一个随机整数。

示例

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

int main() {
  int r = rand();
  printf("%d
", r);
  return 0;
}

亲自试一试 »

注意: 如果您多次运行此程序,每次都会看到相同的数字。这是因为我们尚未设置种子。


设置随机数生成器种子

要使程序每次运行都得到不同的数字,必须给 rand() 一个 起始点(种子)。

你可以使用srand()来完成此操作。一个常见的技巧是使用当前时间作为种子,因为时间总是在变化的:

示例

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

int main() {
  srand(time(NULL));  // seed with current time

  printf("%d
", rand());
  printf("%d
", rand());
  printf("%d
", rand());
  return 0;
}

亲自试一试 »

提示: 只需在 main 函数开始时调用一次 srand() 函数。不要在循环中再次调用它。


生成指定范围内的随机数

通常您需要生成较小范围内的数字,例如 0 到 9。您可以使用取模运算符 %:

示例

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

int main() {
  srand(time(NULL));

  int x = rand() % 10;  // 0..9
  printf("%d
", x);
  return 0;
}

亲自试一试 »


现实生活中的例子:掷骰子

随机数在现实生活中的一个常见应用是掷六面骰子。我们可以通过使用rand() % 6函数来模拟这个过程,生成0到5之间的数字,然后加1得到1到6之间的数字范围:

示例

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

int main() {
  srand(time(NULL));

  int dice1 = (rand() % 6) + 1;
  int dice2 = (rand() % 6) + 1;
  printf("You rolled %d and %d (total = %d)", dice1, dice2, dice1 + dice2);

  return 0;
}

亲自试一试 »

每次运行程序时,都会生成两个介于 1 到 6 之间的随机数,就像现实生活中掷两个骰子一样。