Из ддух наборов числе получить один набор - случайный и определенный.

REMO

Guest
Из ддух наборов числе получить один набор - случайный и определенный.

Есть две таблицы, в каждой из них есть параметр id (в первой id1, во второй id2). Необходимо получить общую последовательность id (id1+id2), чтобы она была случайной, но определенной.

Извиняюсь за корявость формулировки. Случайной, но определенной имеется ввиду ... ORDER BY RAND(число). Т.е. делается выборка в случайном порядке, но этот случайный порядок не меняется, пока не изменится число в RAND().

Если это невозможно реализовать мускулом, подскажите алгоритм как это сделать на ПХП. Из двух полседовательностей чисе получить случайную, но оперделенную !!! последовательность.

Спасибо.
 

SiMM

Новичок
На php - [m]mt_srand[/m] + [m]mt_rand[/m].
Как делать подобное средствами MySQL'я - разве что сделать третью таблицу, где будет случайный порядок id-шников из первой и второй таблицы
PS: ответ исходил из того, что получить из двух множеств одно труда для автора вопроса не составляет
 

alpine

Новичок
REMO
Сделай таблицу соотвествия числа и массива сформированного фукцией [m]shuffle[/m] и дальше работай уже с ней. Массив заносишь сериализованный [m]serialize[/m]
 

REMO

Guest
Автор оригинала: SiMM
На php - [m]mt_srand[/m] + [m]mt_rand[/m].
Как делать подобное средствами MySQL'я - разве что сделать третью таблицу, где будет случайный порядок id-шников из первой и второй таблицы
PS: ответ исходил из того, что получить из двух множеств одно труда для автора вопроса не составляет
не совсем уловил идею. Скажем так есть массив чисел. Как этот массив перемешать случайным образом так, чтобы это можно было контролировать и получить эту случайную последовательность опять. Т.е. нужна мне случайная последовательность такая то. Я воожу номер и массив перемешивается каждый раз в этой случайной последовательности. Т.е. она как бы случайная, но и не случайная.

Аналог в мускуле
PHP:
SELECT * FROM tbl ORDER BY RAND(число)
 

SiMM

Новичок
PHP:
mt_srand(CONSTANT);
for ($i=0;$i<10;$i++)echo mt_rand(0,9)."\n";
С shuffle тоже думаю стоит попробовать. Если я конечно правильно понял проблему.
PS: в MySQL имхо это не будет аналогом.
 

REMO

Guest
Автор оригинала: alpine
REMO
Сделай таблицу соотвествия числа и массива сформированного фукцией [m]shuffle[/m] и дальше работай уже с ней. Массив заносишь сериализованный [m]serialize[/m]
видимо я что то туплю. Но не могу понять как таблица соответствия числа и массива, сформиованного при помощи shuffle, может помочь. Как при втором перемешивании получить ту же случайную последовательность, что и при первом?

-~{}~ 16.03.05 17:48:

разобрался, всем спасибо
вот пример, если кому понадобится

PHP:
$numbers = range(1, 20);
srand(5);
shuffle($numbers);
while (list(, $number) = each($numbers))
{
   echo "$number ";
}
 

alpine

Новичок
REMO
Берешь число, например 1
берешь массив и финкцию [m]shuffle[/m]
применяешь эту функцию к своему массиву
получаешь случайнам образом перемешанный массив запоминаешь это состояние путем занесения этого массива и числа 1 в базу данных
например в таблицу table с двумя полями (int)state и (text)my_array
в поле state заносишь `1` в поле my_array заносишь serialaze($my_array)
все ты запомнил состояние
затем достаешь это состояние по состоянию 1 и делаешь [m]unserialize[/m] получаешь свой " случайный, но определенный" массив
 
Сверху