专栏首页tkokof 的技术,小趣及杂念编程小知识之 Random接口返回值

编程小知识之 Random接口返回值

版权声明:本文为博主原创文章,未经博主允许不得转载。

本文简述了 Random 接口返回值的一些相关信息

平日工作中,(伪)随机数的使用一定是避不开的,拿 C# 为例,System 命名空间下的 Random 类型一般都是我们生成(伪)随机数的第一选择:

var rand = new System.Random();
var val = rand.NextDouble();

Unity 中也在 UnityEngine 命名空间下提供了自己的 Random 类型,不过接口方法上都是静态类型:

var val = UnityEngine.Random.value;

上述的接口方法使用上似乎都很简单,但是深入一下接口细节,可能就不是所有同学都了解了,甚至还会产生混淆:

System.Random 的 NextDouble 方法返回的(伪)随机数的范围是多少? 那么 UnityEngine.Random.value 呢?

很多同学可能都知道答案: 0.0 ~ 1.0

那么接着问:

这些返回值包含 0.0 和 1.0 这两个端点吗?

到这里可能有些同学就会有些混淆了,答案是这样的:

System.Random 的 NextDouble 的返回值范围 >= 0.0 并且 < 1.0, 即 [0.0, 1.0)

UnityEngine.Random.value 的返回值范围 >= 0.0 并且 <= 1.0, 即 [0.0, 1.0]

两者的返回值范围不同导致了混淆的产生,使用时不加注意的话自然也会导致错误.

这里将相关常用的 Random 方法以表格列出,方便记忆和查阅:

类型

方法

返回值

System.Random

Next()

[0, int.MaxValue)

System.Random

Next(int max)

[0, max)

System.Random

Next(int min, int max)

[min, max)

System.Random

NextDouble()

[0.0, 1.0)

UnityEngine.Random

Range(int min, int max)

[min, max)

UnityEngine.Random

Range(float min, float max)

[min, max]

UnityEngine.Random

value

[0.0f, 1.0f]

注意到下面一点可能有助于我们的记忆:

Random 接口方法的返回值范围一般都是左闭右开的,仅 UnityEngine.RandomRange(float min, float max)value 两个方法的返回值范围是全闭区间.

参考

  1. System.Random Doc
  2. UnityEngine.Random Doc

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 数学笔记(一)之列主序矩阵

    对于矩阵,OpenGL采用列主序(column-major order)存储,之前对于这个概念有些模糊,后来又了解了一些相关知识,在此一记~

    用户2615200
  • 音乐游戏&音频解析 ABC(下)

      首先我们应该先确定一下我们到底需要解析歌曲的哪些信息?歌名?作者?呵呵,都不是,我们要解析的应该是歌曲的“信号”属性(譬如歌曲的BPM)。然而歌曲的这些属性...

    用户2615200
  • Flash小品之颜色解析

        Flash小品之颜色解析       不知不觉已经用了一阵子的AS3,渐渐的对Flash有了不少好感,从一个游戏爱好者的角度出发,我个人更喜欢将F...

    用户2615200
  • Mockjs ( 模拟数据 ) 快速入门

    copy_left
  • 【C#】比较 Random 与 RandomNumberGenerator 生成随机字符串

    生成随机数,第一反应肯定是 Random 类,然而,Random 生成的随机数被称为伪随机数,因为用 Random 生成随机数时,需要用到一个“种子”,而 使用...

    丹枫无迹
  • 使用Random来生成随机数的危险性 顶

    234 344 737 314 431 423 823 503 703 654

    算法之名
  • 网站安全公司 如何对个人隐私进行保护

    伴随着顾客个人隐私保护观念的慢慢提高,有关政策法规的聚集颁布,个人隐私保护的总体发展趋势愈来愈严。换一个角度观察,在这般严苛的维护下获得的私人信息数据信息,具备...

    技术分享达人
  • 网站安全公司对个人隐私保护措施

    伴随着顾客个人隐私保护观念的慢慢提高,有关政策法规的聚集颁布,个人隐私保护的总体发展趋势愈来愈严。换一个角度观察,在这般严苛的维护下获得的私人信息数据信息,具备...

    网站安全专家
  • 【php设计模式】策略模式

    策略模式是针对一组算法,将每一种算法都封装到具有共同接口的独立的类中,从而是它们可以相互替换。策略模式的最大特点是使得算法可以在不影响客户端的情况下发生变化...

    码缘
  • TiDB 1.1 Alpha Release

    2018 年 1 月 19 日,TiDB 发布 1.1 Alpha 版。该版本对 MySQL 兼容性、SQL 优化器、系统稳定性、性能做了大量的工作。

    PingCAP

扫码关注云+社区

领取腾讯云代金券