2.5 随机数的生成
1 // Die Roller 2 // Demonstrates generating random numbers 3 4 #include <iostream> 5 #include <cstdlib> 6 #include <ctime> 7 8 using namespace std; 9 10 int main() 11 { 12 srand(static_cast<unsigned int>(time(0))); // seed random number generator based on current time 13 14 int randomNumber = rand(); // generate random number 15 16 int die = (randomNumber % 6) + 1; // get a number between 1 and 6 17 cout << "You rolled a " << die << endl; 18 19 return 0; 20 }
Die Roller程序模拟投掷六面骰子。计算通过生成随机数来进行投掷。
rand()函数
程序包含了一个新文件:#include<cstdlib>
文件cstdlib包含(除了其他内容以外)处理随机数生成的函数。因为包含了该文件,所以可以自由调用其中的函数,包括rand()。
函数是能完成某项任务并有一个返回值的一些代码块。可以通过在函数名后面加上一对括号来调用函数。如果函数有返回值,该值可以赋给一个变量。
函数rand()生成从0到至少32767之间的随机数。具体的上界取决于所使用的C++实现。
为随机数生成器确定种子
计算机基于数学公式生成的伪随机数,而不是真正的随机数。
可以想象成让计算机从一本包含许多预定数字的书中读取数字。
为了防止总是产生相同的随机数列,可以告诉计算机从书中的某一任意位置开始读取数字。该过程称为为随机数生成器确定种子。
srand(static_cast<unsigned int>(time(0))); // seed random number generator based on current time
这行代码,基于当前日期与时间为随机数生成器确定种子。因为当前日期与时间在每次程序运行时都不同。
实际上,srand()函数为随机数生成器确定种子,只需要将一个unsigned int型的值作为种子传递给它。
time(0)的返回值:一个基于当前系统日期和时间的数字。
ststic_cast<unsigned int>只是将这个值转换为unsigned int型。
You want something.Go get it!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现