Пейджинг на случайном наборе данных - PullRequest
2 голосов
/ 25 мая 2009

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

Я собираюсь добавить ссылку, чтобы продемонстрировать проблему. Ссылка на веб-сайт

Сценарий: Когда пользователь заходит и нажимает на ссылку, элементы на странице должны быть рандомизированы. Когда пользователь нажимает на страницу два, три и далее, он должен следовать тому же случайному шаблону, который он сгенерировал в первый раз, чтобы при возвращении на первую страницу элементы на этой странице были такими же, как при первом нажатии ссылка на сайт.

Я подумал о том, чтобы вывести набор данных всех предметов, рандомизированных один раз, и держать их в сеансе, но это последнее средство.

1 Ответ

1 голос
/ 25 мая 2009

1) Ваш рандомизатор должен быть повторяемым: используя уникальное начальное число для каждого пользователя и используя класс Random (), вы можете генерировать одинаковую последовательность случайных чисел через несколько запросов HTTP. Однако вы должны где-то хранить начальное число (я бы предложил файл cookie или скрытый элемент ввода).

public Random GetGenerator() {
DateTime now = new DateTime();
long ticks = now.Ticks();

if(getCookie("ticks") > 0) {
// existing user:
ticks = getCookie("ticks"); // you must implement this to get the user's seed
} else {
// new user:
setCookie(now.Ticks()); // you must implement this to set a Cookie/input field value
}

return new Random(ticks);
}

2) Вы должны сгенерировать M * (N-1) чисел, чтобы в итоге получить случайные числа для страницы N, где M - количество элементов на странице. Только тогда вы можете начать генерировать случайные числа для запрашиваемой страницы.

...