编程小知识之 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 条评论
登录 后参与评论

相关文章

来自专栏数据结构与算法

P3391 【模板】文艺平衡树(Splay)

题目背景 这是一道经典的Splay模板题——文艺平衡树。 题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区...

4117
来自专栏desperate633

LintCode 搜索旋转排序数组题目分析代码

假设有一个排序的按未知的旋转轴旋转的数组(比如,0 1 2 4 5 6 7 可能成为4 5 6 7 0 1 2)。给定一个目标值进行搜索,如果在数组中找到目标值...

1022
来自专栏企鹅号快讯

Python排序(一)

“为了学习Python编程,通过Python编写了一些算法小程序,作为自己的学习笔记,同时分享给大家共同学习交流!” 现在计算机的广泛使用使得数据无处不在, 而...

1955
来自专栏大闲人柴毛毛

贪心算法(四)——最小代价生成树

问题描述 n个村庄间架设通信线路,每个村庄间的距离不同,如何架设最节省开销? 这个问题中,村庄可以抽象成节点,村庄之间的距离抽象成带权值的边,要求最节约...

5906
来自专栏用户2442861的专栏

最大的子序列和问题

http://blog.csdn.net/zhutulang/article/details/7505785

6461
来自专栏决胜机器学习

PHP数据结构(六) ——数组的相乘、广义表

PHP数据结构(六)——数组的相乘、广义表 (原创内容,转载请注明来源,谢谢) 本文接PHP数据结构(五)的内容。 4.2 行逻辑链接的顺序表 行逻辑链接的顺...

4239
来自专栏Leetcode名企之路

【Leetcode】81. 搜索旋转排序数组 II

( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。

1552
来自专栏尾尾部落

[剑指offer] 调整数组顺序使奇数位于偶数前面

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相...

932
来自专栏bboysoul

1493: C语言实验题――圆柱体计算

描述:已知圆柱体的底面半径r和高h,计算圆柱体底面周长和面积、圆柱体侧面积以及圆柱体体积。 输入:输入数据有一行,包括2个正实数r和h,以空格分隔。 输出:...

741
来自专栏WD学习记录

数据结构与算法2016-05-31

数据元素是数据的基本单位,在计算机程序中通常被作为一个整体进行考虑和处理。一个数据元素可由若干个数据项组成。数据项是不可分割的、含有独立意义的最小数据单位,数据...

1052

扫码关注云+社区