Reorder randomly the elements in self.

var a = new Array[Int]

a.shuffle
assert a.is_empty

a.add 1
a.shuffle
assert a == [1]

a.add 2
a.shuffle
assert a == [1,2] or a == [2,1]

ENSURE self.shuffle.has_exactly(old(self))

Property definitions

core :: math $ AbstractArray :: shuffle
	# Reorder randomly the elements in self.
	#
	# ~~~
	# var a = new Array[Int]
	#
	# a.shuffle
	# assert a.is_empty
	#
	# a.add 1
	# a.shuffle
	# assert a == [1]
	#
	# a.add 2
	# a.shuffle
	# assert a == [1,2] or a == [2,1]
	# ~~~
	#
	# ENSURE self.shuffle.has_exactly(old(self))
	fun shuffle
	do
		for i in [0..length[ do
			var j = i + (length-i).rand
			var tmp = self[i]
			self[i] = self[j]
			self[j] = tmp
		end
	end
lib/core/math.nit:512,2--538,4