2

我必须在网站上生成一个项目列表,这些项目列表对于该特定项目列表的用户会话是随机的。

我将添加一个链接来演示该问题。 网站链接

场景:当用户进入并点击链接时,页面上的项目应该是随机的。当用户点击第二、三页之后,它应该遵循它第一次生成的相同随机模式,这样当我回到第一页时,该页面上的项目将与用户第一次单击时相同关联。

我确实想过将所有项目的数据集随机化一次并将它们保持在会话中,但这是最后的手段。

4

1 回答 1

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 是每页的项目数。只有这样,您才能开始为请求的页面生成随机数。

于 2009-05-25T06:14:22.573 回答