前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >编程小知识之 Random接口返回值

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

作者头像
用户2615200
发布2018-12-14 15:10:33
4870
发布2018-12-14 15:10:33
举报

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

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

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

代码语言:javascript
复制
var rand = new System.Random();
var val = rand.NextDouble();

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

代码语言:javascript
复制
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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年11月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档