随机范围是什么意思?

时间:2018-12-07 10:04:03

标签: arrays optimization random outofrangeexception

我正在使用unity的random.value函数(我认为我在其他地方也看到了此行为),根据文档说明,该函数的工作方式如下。

  

此属性可能同时返回0.0和1.0。此行为与许多其他随机数生成器的行为不同,后者返回的值小于但永远不完全等于1.0。

现在当使用这种方法时

HttpWebRequest

当所有行星都对齐时,我是否需要担心会出现ArrayOutOfRangeException?难道这就是说我为了能够晚上入睡而被迫这样做吗?

    url1 = "http://www.bing.com/az/hprichbg/rb/PearlHarborWindows_EN-US8565186567_1920x1200.jpg"

    Dim myHttpWebRequest As HttpWebRequest = CType(WebRequest.Create(url1), HttpWebRequest)
    myHttpWebRequest.MaximumAutomaticRedirections = 1
    myHttpWebRequest.AllowAutoRedirect = True
    Dim defaultProxy As IWebProxy = WebRequest.DefaultWebProxy
    If (defaultProxy IsNot Nothing) Then
        defaultProxy.Credentials = CredentialCache.DefaultCredentials
        myHttpWebRequest.Proxy = defaultProxy
    End If

    Dim myHttpWebResponse As HttpWebResponse = CType(myHttpWebRequest.GetResponse, HttpWebResponse)
    url2 = myHttpWebResponse.ResponseUri.ToString

    Label1.Text = url1
    Label2.Text = url2

我还想知道为什么有人会创建一个不返回仅小于一个数字的随机函数?这样做有什么隐藏的好处吗?

1 个答案:

答案 0 :(得分:3)

不,您不应该使用它。如果它确实返回1.0,那么您将遇到问题。坦白地说,我认为这是Unity方面的API设计错误。

但是,无论如何我都不建议您编写代码。而是使用Random.Range method

int number = array[Random.Range(0, array.Length)];

在那里,接受int值的重载将最大值视为排他性,而不是排他性。