YuReC.CoM, я предметно вопрос в спецификации Java не исследовал, но зато могу сказать, что если тебе нужен точный ответ, на float и double полагаться нельзя. Если ты их используешь, то должен учитывать, что значения могут иметь отклонения от ожидаемых значений. Но если нужно считать точно, тогда на Java SE используют BigDecimal, а тебе можно попробовать обойтись int.
Ссылка на пост
26 июл 2011 в 19:52
seclub.org/forum/goto/13613486/ - самый простой вариант - генерировать два случайных числа в пределах диапазона индексов массива и переставлять элементы по этим адресам. И так какое-то количество раз в цикле.