這裏我試圖看看Array#shuffle!
如何處理數組對象。於是,我開始在我IRB
擺弄它:Array#爲什麼洗牌!不適用於嵌套數組?
[1,2,3]
#=> [1, 2, 3]
[1,2,3].shuffle!
#=> [3, 1, 2]
在上面的代碼中,我明白它是如何工作的。而下面我試圖用更加艱難的方式來看待它從每個角落。
[1,2,5]
#=> [1, 2, 5]
[1,2,5]<<[1,2,5]
#=> [1, 2, 5, [1, 2, 5]]
直到現在我很好。
[1, 2, 5, [1, 2, 5]].shuffle!
#=> [5, 1, 2, [1, 2, 5]]
有了上面的一段代碼我有困惑。所以下面的問題就在我的腦海:
(一)爲什麼不
shuffle!
遞歸工作?正如我預期的內部陣列[1, 2, 5]
的輸出也將被洗牌。但沒有發生。(二)爲什麼
shuffle!
不推諉元件排列[1, 2, 5]
,而只能與陣列[1, 2, 5, [1, 2, 5]]
的1, 2, 5,
要素是什麼?我輸出的結果是[[1, 2, 5],5, 1, 2]
。那麼爲什麼元素數組沒有改變它的位置,而只是正常的元素呢?
編輯:
非常有趣的現象則顯示:
a=[1,2,4]
#=> [1, 2, 4]
a<<[7,8]
#=> [1, 2, 4, [7, 8]]
a.shuffle!
#=> [[7, 8], 1, 4, 2]
a.shuffle!
#=> [4, 1, [7, 8], 2]
a.shuffle!
#=> [[7, 8], 2, 1, 4]
irb(main):006:0>
是否洗牌真正遵循任何命令或它的隨機洗牌?
我剛更新了我的描述。 – 2013-02-21 09:57:23
查看文檔和源代碼(http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-shuffle),它表明洗牌是隨機的。你期望它會是什麼? – 2013-02-21 12:02:35