为什么" array.length"当我们把它放在array []中时返回数组对象?

时间:2015-05-08 22:23:44

标签: arrays ruby random maxlength

rand(array.length)        # returns random index <br>
array[rand(array.length)] # returns random array object

我无法理解背后的逻辑。我假设第二个例子也返回随机索引,然后将其存储在数组中。

kitty = [100,102,104,105]

rand(kitty.length)        # returns index, for example 3 ( or 0,1,2 )
array[rand(kitty.length)] # returns random array object, for example 104 ( or 100,102,105)

4 个答案:

答案 0 :(得分:2)

虽然array.sample是从数组中获取随机元素的最佳方法,但我相信OP正在询问方法的链接是如何工作的。

当您致电:rand(array.length)时,会返回一个数字,为​​真。但是在以下情况下:

array[ rand(array.length) ]

返回一个数字,然后立即进入数组调用,这将为您提供该数组索引处的对象。

答案 1 :(得分:0)

这是一个教程吗?如果是这样,请相信它。 array.sample是如何做到的。

答案 2 :(得分:0)

红宝石代码

kitty = [100,102,104,105]
kitty.sample                #to get random array elements

答案 3 :(得分:0)

您所描述的行为是预期的:

array[index]是对提供的数组中对象的引用,其中 index 是一个小于array.length的数值,因为rand(array.length)返回一个随机数字值小于array.length您正在有效地访问给定数组的随机索引处的元素。

虽然可以使用array.sample获得相同的行为,但建议使用。

有关Ruby阵列的更多信息,请参阅以下文档:http://ruby-doc.org/core-2.2.0/Array.html