Class: Array
- Inherits:
-
Object
- Object
- Array
- Defined in:
- lib/rand.rb
Instance Method Summary collapse
-
#pick ⇒ Object
Choose and return a random element of self.
-
#pick! ⇒ Object
Deletes a random element of self, returning that element.
-
#pick_index ⇒ Object
Return the index of an random element of self.
-
#pick_index! ⇒ Object
Destructive pick_index.
-
#pick_with_index ⇒ Object
Return a random element of self with its index.
-
#pick_with_index! ⇒ Object
Delete and return a random element of self with its index.
-
#shuffle ⇒ Object
Return an array of the elements in random order.
-
#shuffle! ⇒ Object
Destructive shuffle.
Instance Method Details
#pick ⇒ Object
Choose and return a random element of self.
[1, 2, 3, 4].pick #=> 2 (or 1, 3, 4)
39 40 41 |
# File 'lib/rand.rb', line 39 def pick self[pick_index] end |
#pick! ⇒ Object
Deletes a random element of self, returning that element.
a = [1, 2, 3, 4]
a.pick #=> 2
a #=> [1, 3, 4]
47 48 49 50 51 52 |
# File 'lib/rand.rb', line 47 def pick! i = pick_index rv = self[i] delete_at(i) rv end |
#pick_index ⇒ Object
Return the index of an random element of self.
["foo", "bar", "baz"].pick_index #=> 1 (or 0, or 2)
56 57 58 |
# File 'lib/rand.rb', line 56 def pick_index rand(size) end |
#pick_index! ⇒ Object
Destructive pick_index. Delete a random element of self and return its index.
a = [11, 22, 33, 44]
a.pick_index! #=> 2
a #=> [11, 22, 44]
65 66 67 68 69 |
# File 'lib/rand.rb', line 65 def pick_index! i = pick_index delete_at i i end |
#pick_with_index ⇒ Object
Return a random element of self with its index.
a = ["a", "b", "c", "d"]
a.pick_with_index #=> ["b", 1]
a #=> ["a", "b", "c", "d"]
75 76 77 78 |
# File 'lib/rand.rb', line 75 def pick_with_index i = pick_index [self[i], i] end |
#pick_with_index! ⇒ Object
Delete and return a random element of self with its index.
a = ["a", "b", "c", "d"]
a.pick_with_index! #=> ["b", 1]
a #=> ["a", "c", "d"]
84 85 86 87 88 |
# File 'lib/rand.rb', line 84 def pick_with_index! rv = pick_with_index delete_at rv[1] rv end |
#shuffle ⇒ Object
Return an array of the elements in random order.
[11, 22, 33, 44].shuffle #=> [33, 11, 44, 22]
92 93 94 |
# File 'lib/rand.rb', line 92 def shuffle dup.shuffle! end |
#shuffle! ⇒ Object
Destructive shuffle. Arrange the elements of self in new order. Using Fisher-Yates shuffle.
a = [11, 22, 33, 44]
a.shuffle!
a #=> [33, 11, 44, 22]
101 102 103 104 105 106 107 108 109 110 |
# File 'lib/rand.rb', line 101 def shuffle! (size-1).downto(1) {|index| other_index = rand(index+1) next if index == other_index tmp = self[index] self[index] = self[other_index] self[other_index] = tmp } self end |