2009-05-25 32 views
2

我必須生成一個網站上的物品列表,這些物品的列表對於該特定物品列表的用戶會話是隨機的。在隨機物品數據集上尋呼

我將添加一個鏈接來演示問題。 WebSite Link

場景: 當用戶進來並點擊鏈接時,頁面上的項目應該隨機化。當用戶點擊第二頁,第三頁時,它應該遵循它第一次生成的相同的隨機模式,以便當我回到第一頁時,該頁上的項目將與當用戶第一次點擊鏈接。

我的確想過把所有項目的數據集都隨機化一次並保留在會話中,但這是最後的手段。

回答

1

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是每頁的項目數。只有這樣你才能開始爲請求的頁面生成隨機數字。

+0

我試過這種技術。我做了和你寫的一樣的東西。現在發生的是它在我的機器上正常工作。它生成一組具有給定種子的隨機數。 當我把它放在QA服務器上時,它會爲給定的種子返回不同的值,這在技術上不應該這樣做。 任何想法? – sajidnizami 2009-05-25 07:51:24