2009-05-25 2 views
2

특정 항목에 대한 사용자 세션에 대해 무작위로 웹 사이트에 항목 목록을 생성해야합니다.무작위 아이템 데이터 세트에 대한 페이징

문제를 설명하기위한 링크를 추가 할 예정입니다. WebSite Link

시나리오 : 사용자가 들어 와서 링크를 클릭하면 페이지의 항목이 무작위로 지정되어야합니다. 사용자가 처음 2 페이지를 클릭하면 첫 번째 페이지로 돌아갈 때 해당 페이지의 항목이 사용자가 처음 클릭했을 때와 같을 수 있도록 첫 번째 페이지와 동일한 임의의 패턴을 따라야합니다. 링크.

나는 모든 항목의 데이터 세트를 한 번 무작위로 추출하여 세션에 보관하는 것을 생각했지만 최후의 수단입니다.

답변

1

1) 랜덤 화기는 반복 가능해야합니다. 각 사용자마다 고유 한 시드를 사용하고 Random() 클래스를 사용하면 여러 HTTP 요청에서 동일한 일련의 난수 을 생성 할 수 있습니다. 그러나 시드를 어딘가에 저장해야합니다 (쿠키 또는 숨겨진 입력 요소를 제안합니다). 당신은 M의 *를 (생성해야

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) N-1) 번호 마지막으로 M 페이지 당 항목의 수입니다 페이지 N에 대한 임의의 숫자에 도착합니다. 그래야만 요청한 페이지의 난수 생성을 시작할 수 있습니다.

+0

이 기법을 시도했습니다. 나는 당신이 쓴 것과 똑같은 일을했습니다. 이제는 내 컴퓨터에서 제대로 작동합니다. 주어진 시드와 동일한 난수 세트를 생성합니다. QA 서버에이 값을 넣으면 기술적으로 수행하지 않아야하는 지정된 시드에 대해 다른 값을 반환합니다. 아이디어가 있으십니까? – sajidnizami

+0

신경 쓰지 마 :) LINQ와 잘 어울립니다. – sajidnizami

+0

죄송합니다. 그 말이 맞지 않습니다. 씨앗이 요청을 통해 동일하다고 확신합니까? –

관련 문제