Re: масив чисел
- From
- Evgenij Masherov (2:5020/175.2)
- To
- Oleg Khovayko
- Date
- 2003-01-03T02:58:20Z
- Area
- RU.ALGORITHMS
From: "Evgenij Masherov" <EMasherow@nsi.ru>
Fri Jan 03 2003 02:39, Oleg Khovayko wrote to Evgenij Masherov:
OK> Я же еще 29 декабря в своем письме кидал
OK> сюда алгоритм перемешивания, не требующий
OK> ни доп. памяти, ни сортировки, и делающий
OK> перемешивание за 1 проход - за N().
OK> Или вы не получали сообщения, или читали не до конца?
OK> Непонятно. Повторяю еще раз алгоритм перемешивания:
OK> int mas[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
OK> for(int i = 9; i > 0; i--) {
OK> int j = random() % i;
OK> int tmp = mas[j];
OK> mas[j] = mas[i];
OK> mas[i] = tmp;
OK> }
OK> Во, дешево и сердито...
Дешево. Сердито. И неверно. В том смысле, что равновероятность всех
перестановок не обеспечивается. Хотя если нужно только сделать некоторое
возмущение расстановки - может и сойти.
Похоже, что вообще гарантировать равновероятность менее чем за NlogN операций
не выйдет...
Евгений Машеров АКА СанитарЖеня
--- ifmail v.2.15dev5
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)