Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.078 c
15-1335039032
Andryk
2012-04-22 00:10
2013.03.22
Всем привет, тутже есть математики?)))


4-1259040937
Alex_C
2009-11-24 08:35
2013.03.22
"Принудительная" запись в COM-порт


4-1227867160
dmitry_12_08_73
2008-11-28 13:12
2013.03.22
Запрещение реакции на нажатие кнопки WIN на клавиатуре


2-1340633585
webpauk
2012-06-25 18:13
2013.03.22
Изменение TabSheet.Caption


2-1329678422
Zheksonz
2012-02-19 23:07
2013.03.22
Почему на панели TCategoryPanelGroup не виден TLabel?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский