许多程序需要(伪)随机值来模拟现实世界中的事件。
一些常见、熟悉的例子包括:
('H', 'T')中随机取值。用计算机生成真正随机的值是一项出人意料地困难的技术挑战,这也是为什么还会有“伪随机”生成器。
Math.random()函数不应被用于安全性和加密相关的应用!
完成关于这个概念的学习练习,以了解更多
在 JavaScript 中,你可以使用 Math.random()函数生成伪随机数。
它会返回一个介于 0(包含)和 1(不包含)之间的伪随机浮点数。
Mary 是电视剧 Star Trek: The Next Generation 的忠实粉丝。 她经常玩纸上角色扮演游戏,在游戏里她和朋友们假扮成 Starship Enterprise 的船员。 Mary 扮演的角色是 Captain Picard,也就是说,她得负责记舰长日志。 她很喜欢游戏里需要发挥创意的那部分,却不喜欢临时编造随机数据。
来帮 Mary 写一些随机生成器,用来生成舰长日志里常见的数据吧。
Enterprise(注册号 NCC-1701)并不是唯一一艘在太空中飞的星舰! 当它遇到另一艘星舰时,Mary 需要把这艘星舰的注册号记进日志。
注册号以前缀 “NCC-” 开头,后面是一个 1000 到 9999 之间的数字(包含两端)。
实现 randomShipRegistryNumber() 函数,返回一个随机的星舰注册号。
randomShipRegistryNumber();
// => "NCC-1947"
日志里要是没有日期,那还有什么用呢?
星历是一个浮点数。 The Next Generation 第一季中 Starship Enterprise 的冒险,发生在星历 41000.0 和 42000.0 之间。 “4”代表 24 世纪,“1”代表第一季。
实现 randomStardate 函数,返回一个介于 41000.0(包含)和 42000.0(不包含)之间的浮点数。
randomStardate();
// => 41458.15721310934
Starship Enterprise 在航行途中会遇到许多行星。 Star Trek 宇宙中的行星会按照自身的性质被划分成不同的类别。 例如,地球是一颗 M 级行星。 所有可能的行星类别有:D、H、J、K、L、M、N、R、T 和 Y。
实现 randomPlanetClass() 函数。
它应该随机返回其中一种行星类别。
randomPlanetClass();
// => "K"