Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Oleg Polubasoff                      2:5020/400     06 Jan 2003  22:12:54
 To : Nickita A Startcev
 Subject : масив чисел
 -------------------------------------------------------------------------------- 
 
     Привет, Hикита!
 
 В воскресенье, 05.01.2003  18:26, Nickita A Startcev писал к Evgenij
 Masherov:
 
 EM>> Похоже, что вообще гарантировать равновероятность менее чем за NlogN
 EM>> операций не выйдет...
 
     IMHO, ты спутал с числом обменов для сортировки. Ломать (перемешивать)
 обычно проще, чем строить (сортировать). :)
 
 NA> А алгоритм типа нижеприведенного сильно плохое распределение даст?
 NA> for(i=0;i<10;i++)
 NA> {
 NA>     a=random();
 NA>     b=random();
 NA>     swap(array[a],array[b]);
 NA> }
 
     Сильно. Будем считать, что random() даёт равномерно распределённые целые
 от 0 до 9 и при этом разные вызовы независимы. Поскольку random() вызывается
 20 раз, то всего (равновероятных) путей выполнения программы - 10^20. Так
 как различных перестановок - 10!, то понятно, что некоторые из путей
 порождают одинаковые перестановки. Hо невозможно поровну распределить пути
 между перестановками, так как 10^20 не делится нацело на 10!, следовательно
 некоторые перестановки получаются большим числом путей, чем другие.
 
     По этой же причине плох и следующий алгоритм:
 
 for (int i = 9; i > 0; --i)
     swap (array[i], array[RND(10)]);
 
     А правильный алгоритм уже неоднократно приводили, он имеет 10! возможных
 путей выполнения, и разные пути порождают разные перестановки:
 
 for (int i = 9; i > 0; --i)
     swap (array[i], array[RND(i+1)]);
 
 2Oleg Khovayko:
     RND(n) часто определяют как random()%n, и для практических целей этого
 обычно вполне достаточно. Hо, если, как ты говоришь, интересует именно
 "математически верный" алгоритм, то надо иметь ввиду, что результат
 random()%n может быть распределён не равномерно. Hапример, если random()
 даёт равномерно распределённые целые от 0 до N, и при этом N не делится
 нацело на n, то некоторые остатки выпадают реже других.
     О том, что последовательные вызовы random() обычно не независимы, молчу.
 
     С уважением, Олег Полубасов. СПб.
 
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 масив чисел   Igor Kasyanchuk   27 Dec 2002 17:23:00 
 масив чисел   Vladimir Vassilevsky   28 Dec 2002 23:35:20 
 Re: масив чисел   Oleg Khovayko   29 Dec 2002 21:16:29 
 Re: масив чисел   Sergey Andrianov   30 Dec 2002 23:52:36 
 масив чисел   Igor Kasyanchuk   31 Dec 2002 20:56:00 
 масив чисел   Evgenij Masherov   01 Jan 2003 14:01:27 
 масив чисел   Sam   01 Jan 2003 19:01:20 
 Re: масив чисел   Eugene Kilachkoff   01 Jan 2003 22:14:24 
 масив чисел   Evgenij Masherov   02 Jan 2003 00:13:58 
 масив чисел   Sam   03 Jan 2003 00:35:31 
 масив чисел   Evgenij Masherov   03 Jan 2003 03:12:13 
 масив чисел   Sam   03 Jan 2003 14:33:28 
 масив чисел   Igor Kasyanchuk   03 Jan 2003 23:50:00 
 масив чисел   Sam   06 Jan 2003 00:02:09 
 масив чисел   Igor Kasyanchuk   01 Jan 2003 21:07:00 
 масив чисел   Evgenij Masherov   02 Jan 2003 10:22:47 
 масив чисел   Sam   03 Jan 2003 00:41:27 
 Re: масив чисел   Eugene Kilachkoff   03 Jan 2003 01:03:01 
 масив чисел   Sam   03 Jan 2003 14:29:25 
 масив чисел   Evgenij Masherov   03 Jan 2003 03:14:59 
 Re: масив чисел   Oleg Khovayko   03 Jan 2003 03:39:51 
 Re: масив чисел   Evgenij Masherov   03 Jan 2003 03:58:20 
 Re: масив чисел   Sergej Tarasov   03 Jan 2003 04:29:11 
 Re: масив чисел   Evgenij Masherov   03 Jan 2003 04:59:16 
 Re: масив чисел   Sergej Tarasov   03 Jan 2003 05:24:40 
 Re: масив чисел   Oleg I. Khovayko   03 Jan 2003 18:03:07 
 Re: масив чисел   Evgenij Masherov   03 Jan 2003 22:57:30 
 масив чисел   Max Alekseyev   29 Jan 2003 18:49:50 
 масив чисел   Evgenij Masherov   30 Jan 2003 11:02:18 
 масив чисел   Max Alekseyev   30 Jan 2003 02:03:18 
 масив чисел   Nickita A Startcev   05 Jan 2003 22:26:44 
 масив чисел   Evgenij Masherov   06 Jan 2003 20:16:24 
 Re: масив чисел   Anatoly Saveliev   08 Jan 2003 08:32:30 
 масив чисел   Oleg Polubasoff   06 Jan 2003 22:12:54 
 Re: масив чисел   Oleg I. Khovayko   08 Jan 2003 00:33:51 
 масив чисел   Max Alekseyev   29 Jan 2003 18:45:26 
 Re: масив чисел   Sergey Andrianov   04 Jan 2003 00:13:42 
 масив чисел   Alexey Burdin   04 Jan 2003 19:45:36 
 масив чисел   Igor Kasyanchuk   04 Jan 2003 21:16:00 
 масив чисел   Ianos Gnatiuc   05 Jan 2003 09:53:22 
 масив чисел   Nickita A Startcev   05 Jan 2003 22:15:12 
 Re: масив чисел   Sergey Andrianov   04 Jan 2003 00:11:36 
 Re: масив чисел   Andrew Starsh   01 Jan 2003 11:50:53 
Архивное /ru.algorithms/10671eb39823.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional