Главная страница
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.52 MB
Время: 0.051 c
15-1352728971
Дмитрий Белькевич
2012-11-12 18:02
2013.03.22
Ошибка при билде проекта. XE3


15-1352825506
>|<
2012-11-13 20:51
2013.03.22
Определение границ максимальной плотности точек


15-1353616205
Юрий
2012-11-23 00:30
2013.03.22
С днем рождения ! 23 ноября 2012 пятница


15-1330005162
Artem
2012-02-23 17:52
2013.03.22
Посоветуйте программу-терминал...


2-1330947283
Vyacheslav
2012-03-05 15:34
2013.03.22
Две формы: FormStyle=fsStayOnTop.. Form2 всегда выше Form1?