我是一個新手,紅寶石和IM努力學習與RubyKoans但我得到stucked與這個測試相同的隨機數紅寶石
def test_dice_values_should_change_between_rolls
48 dice = DiceSet.new
49 dice.roll(5)
50 first_time = dice.values
51
52 dice.roll(5)
53 second_time = dice.values
54
55 assert_not_equal first_time, second_time,
56 "Two rolls should not be equal"
57 end
,這是DiceSet類
5 class DiceSet
6 attr_accessor :values
7 ··
8 def initialize
9 @values = []
10 end
11
12 def roll(times)
13 @values.clear
14 times.times do |x|
15 @values << (1 + rand(6))
16 end
17 end
18 ····
19 end
的東西在這裏每當我運行代碼時,它總是生成完全相同的一組數字,這就是輸出。
Two rolls should not be equal. <[3, 2, 4, 1, 3]> expected to be != to <[3, 2, 4, 1, 3]>.
測試IM調用DiceSet.roll兩次,併爲那些兩次我得到完全相同的一組「隨機」數
時,他們supossed是diferent吧?我想我可能會創建DiceSet的另一個實例,以通過測試,但我猜測這不是測試的目標
對於這個工作,你需要做的'FIRST_TIME = Array.new(dice.values)'和'second_time = Array.new(dice.values)' –
我與你古斯塔沃。我想節省內存並重復使用相同的Array。不幸的是,koans的設計者忘記了等式首先檢查引用,然後檢查實例變量。解決這個引用問題的一個可能的方法是將'first_time = dice.values'改爲'first_time = dice.values.clone'。但是這並不能解決這樣一個事實,即無論如何這次測試都會失敗。 –