Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Random ный список чисел.   Найти похожие ветки 

 
ЕщеОдинКакжеНадоели   (2012-11-16 21:21) [0]

Есть числа в массиве (списке), не повторяются. (Хотя неважно)
Нужно их перемешать в случайном порядке, т.е.
есть некая функция, которая возвращает random"ое число из этого списка, потом возвращает другое, но не то, что выпадало раньше.

Как это сделать?
Похоже на лототрон в Золотом Ключе. :)


 
RWolf ©   (2012-11-16 21:29) [1]

ну так и сделать — перемешать в случайном порядке.
а возвращать уже перемешанные, по очереди.


 
ЕщеОдинКакжеНадоели   (2012-11-16 21:30) [2]


> RWolf ©   (16.11.12 21:29) [1]


А как перемешивать, я не знаю?


 
Dimka Maslov ©   (2012-11-16 21:34) [3]

делаем Swap для двух случайно взятых индексов. n² раз.


 
Sha ©   (2012-11-16 21:54) [4]

> Dimka Maslov ©   (16.11.12 21:34) [3]
> делаем Swap для двух случайно взятых индексов. n² раз.


как это работает для n=2?


 
Sha ©   (2012-11-16 21:56) [5]

> ЕщеОдинКакжеНадоели   (16.11.12 21:21)

1. выбираем случайный из n
2. выбираем случайный из оставшихся n-1
дальше сам


 
AV ©   (2012-11-16 21:58) [6]

не надо мешать
берем случайное из из всего интервала, показываем, меняем с последним
берем случайное из интервала до последнего,  показываем, меняем с предпоследним
и т.п.


 
TUser ©   (2012-11-16 21:59) [7]

for i := 0 to n-1 do
 swap(i,random(n));


 
Dimka Maslov ©   (2012-11-16 22:27) [8]


> как это работает для n=2?


никак. и для n=1 тоже никак.


 
Sha ©   (2012-11-16 22:36) [9]

> Dimka Maslov ©   (16.11.12 22:27) [8]

a для n=3?


 
Sha ©   (2012-11-16 22:36) [10]

> TUser ©   (16.11.12 21:59) [7]

а доказать?


 
Inovet ©   (2012-11-16 22:39) [11]

> [6] AV ©   (16.11.12 21:58)
> берем случайное из из всего интервала, показываем, меняем с последним

А так не получится, что одни сильнее перемешаются, чем другие? Тогда уж вытаскивать/помечать случайное.


 
AV ©   (2012-11-16 22:50) [12]


> Inovet ©   (16.11.12 22:39) [11]
А так не получится, что одни сильнее перемешаются, чем другие?

случайно выбрать из упорядоченного vs случайно выбрать из все более перемешанного с каждой итерацией
на вскидку, это не должно иметь значения.


 
MBo ©   (2012-11-16 22:50) [13]

http://en.wikipedia.org/wiki/Fisher–Yates_shuffle


 
MBo ©   (2012-11-16 22:56) [14]

по-русски:
http://qps.ru/RYDwI


 
Sha ©   (2012-11-16 22:56) [15]

> Inovet ©   (16.11.12 22:39) [11]
> AV ©   (16.11.12 22:50) [12]

эти варианты равносильны


 
Sha ©   (2012-11-16 23:08) [16]

> MBo ©   (16.11.12 22:56) [14]
> по-русски:


че-то намудрили там по-русски не по-русски,
по-мне так гораздо очевиднее цикл крутить наоборот


 
Inovet ©   (2012-11-16 23:20) [17]

> [15] Sha ©   (16.11.12 22:56)
> эти варианты равносильны

При разном результате. Ну рандом. После первого раза, последующие не влияют на случайность.


 
Sha ©   (2012-11-16 23:32) [18]

> Inovet ©   (16.11.12 23:20) [17]

абсолютно равносильны


 
Inovet ©   (2012-11-16 23:58) [19]

> [18] Sha ©   (16.11.12 23:32)
> абсолютно равносильны

Я ыот об этом: при swap i-тый оказывается в случайной позиции (0..i-1), при сдвиге в i-1.


 
Sha ©   (2012-11-17 00:28) [20]

> Inovet ©   (16.11.12 23:58) [19]

это понятно,
однако для каждого кортежа одного алгоритма можно указать,
при каком условии второй алгоритм получит тот же кортеж


 
oldman ©   (2012-11-17 12:34) [21]


> Нужно их перемешать в случайном порядке, т.е.
> есть некая функция, которая возвращает random"ое число из
> этого списка,


На фига таблицу-то перемешивать??????????????????


 
Dimka Maslov ©   (2012-11-17 15:04) [22]


> a для n=3?


Прекрасно будет работать. Девять случайных перестановок всяко перемешают список из трёх элементов


 
MBo ©   (2012-11-17 15:14) [23]

>Девять случайных перестановок всяко перемешают список из трёх элементов
Вот только перестановки будут неравновероятными


 
Dimka Maslov ©   (2012-11-17 15:21) [24]


> Вот только перестановки будут неравновероятными


А и пёс бы с ими. Мне лично хватает.


 
MBo ©   (2012-11-17 16:02) [25]

>А и пёс бы с ими. Мне лично хватает.
Но ведь можно сделать равномерно за n перестановок



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.063 c
15-1350464720
AV
2012-10-17 13:05
2013.03.22
Подскажите запрос


15-1346788263
AV
2012-09-04 23:51
2013.03.22
Запретить пользоваться сайтами, кроме явно разрешенных


4-1261646635
lunev_denis
2009-12-24 12:23
2013.03.22
Обновление информации в реестре


2-1341931500
Сергей
2012-07-10 18:45
2013.03.22
Как узнать что окно на заднем плане?


15-1336837860
dmk
2012-05-12 19:51
2013.03.22
Отпуск





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский