轨道
/
JavaScript
JavaScript
/
练习
/
船长日志
船长日志

船长日志

学习练习

简介

许多程序需要(伪)随机值来模拟现实世界中的事件。

一些常见、熟悉的例子包括:

  • 抛硬币:从('H', 'T')中随机取值。
  • 掷骰子:从 1 到 6 中随机取一个整数。
  • 洗牌:把一副牌随机打乱顺序。
  • 在三维图形模拟中生成树木和灌木。

用计算机生成真正随机的值是一项出人意料地困难的技术挑战,这也是为什么还会有“伪随机”生成器。

Caution

Math.random()函数不应被用于安全性和加密相关的应用! 完成关于这个概念的学习练习,以了解更多

生成随机数

在 JavaScript 中,你可以使用 Math.random()函数生成伪随机数。 它会返回一个介于 0(包含)和 1(不包含)之间的伪随机浮点数。

说明

Mary 是电视剧 Star Trek: The Next Generation 的忠实粉丝。 她经常玩纸上角色扮演游戏,在游戏里她和朋友们假扮成 Starship Enterprise 的船员。 Mary 扮演的角色是 Captain Picard,也就是说,她得负责记舰长日志。 她很喜欢游戏里需要发挥创意的那部分,却不喜欢临时编造随机数据。

来帮 Mary 写一些随机生成器,用来生成舰长日志里常见的数据吧。

1. 随机生成一个星舰注册号

Enterprise(注册号 NCC-1701)并不是唯一一艘在太空中飞的星舰! 当它遇到另一艘星舰时,Mary 需要把这艘星舰的注册号记进日志。

注册号以前缀 “NCC-” 开头,后面是一个 1000 到 9999 之间的数字(包含两端)。

实现 randomShipRegistryNumber() 函数,返回一个随机的星舰注册号。

randomShipRegistryNumber();
// => "NCC-1947"

2. 随机生成一个星历

日志里要是没有日期,那还有什么用呢?

星历是一个浮点数。 The Next Generation 第一季中 Starship Enterprise 的冒险,发生在星历 41000.0 和 42000.0 之间。 “4”代表 24 世纪,“1”代表第一季。

实现 randomStardate 函数,返回一个介于 41000.0(包含)和 42000.0(不包含)之间的浮点数。

randomStardate();
// => 41458.15721310934

3. 随机生成一颗行星

Starship Enterprise 在航行途中会遇到许多行星。 Star Trek 宇宙中的行星会按照自身的性质被划分成不同的类别。 例如,地球是一颗 M 级行星。 所有可能的行星类别有:D、H、J、K、L、M、N、R、T 和 Y。

实现 randomPlanetClass() 函数。 它应该随机返回其中一种行星类别。

randomPlanetClass();
// => "K"
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
JavaScript Exercism

准备好开始 船长日志 了吗?

注册 Exercism,借助 37 个概念159 个练习 和真人导师指导,学习并掌握 JavaScript,全部免费。