Показать сообщение отдельно
  #22 (permalink)  
Старый 24.04.2012, 22:37
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от 9xakep
Если я все правильно понял, то ты немного неправильно сравниваешь алгоритмы, точнее специально для таких случаев, и я создал ф-ию doCheck()
скорее наоборот: ты превратно понимаешь идею генерации случайного перемешивания.
из-за твоей функции doCheck() ты заведомо отсеиваешь целый класс перестановок "похожих" на исходный массив.
То есть из массива [1,2] может получится только [2,1], а [1,2] ты считаешь "неслучайным" и отбрасываешь.
Это неправильно.
Случайным является перемешивание, если вероятность любой перестановки одинакова, то есть из [1,2] должны получатся [1,2] и [2,1] каждый с вероятностью 50%
Вот именно с этой позиции я и сравниваю алгоритмы.
Сообщение от 9xakep
по-мойму если выпадают такие числа: Math.random()*1000|0: 21,123,765, это лучше чем: 345,376,401
На такой маленькой выборе нельзя характеризовать качество ГПСЧ
Сообщение от 9xakep
Я правильно понимаю, что у тебя алгоритм более лучше из-за этого:
Нет не правильно, так как ты не понял принципе моего алгоритма.
Мой алгоритм следующий:
1) берем случайное число(точнее на случайной позиции) из исходного массива, вырезая его из массива(массив при этом сдвигается чтобы заполнить пропуск)
2)вставляем это число в конец нового массива
3)возвращаемся к шаге 1, пока в исходном массиве есть хотя бы 1 элемент
4) копируем новый массив в исходный массив(просто поддержал стиль остальных функций)

Сообщение от 9xakep
Никак не могу понять, что значит эта цифра:
1,2,3: 25654
Это означает что перестановка [1,2,3] была получена 25654 раз за время теста
То есть если тестировалось 100000раз, то получается что данный результат получался в 26% случаев, что явно больше чем у остальных.
Это плохо - это свидетельствует о неравномерном распределении результата
Ответить с цитированием