我必须在网站上生成一个项目列表,这些项目列表对于该特定项目列表的用户会话是随机的。
我将添加一个链接来演示该问题。 网站链接
场景:当用户进入并点击链接时,页面上的项目应该是随机的。当用户点击第二、三页之后,它应该遵循它第一次生成的相同随机模式,这样当我回到第一页时,该页面上的项目将与用户第一次单击时相同关联。
我确实想过将所有项目的数据集随机化一次并将它们保持在会话中,但这是最后的手段。
我必须在网站上生成一个项目列表,这些项目列表对于该特定项目列表的用户会话是随机的。
我将添加一个链接来演示该问题。 网站链接
场景:当用户进入并点击链接时,页面上的项目应该是随机的。当用户点击第二、三页之后,它应该遵循它第一次生成的相同随机模式,这样当我回到第一页时,该页面上的项目将与用户第一次单击时相同关联。
我确实想过将所有项目的数据集随机化一次并将它们保持在会话中,但这是最后的手段。
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 是每页的项目数。只有这样,您才能开始为请求的页面生成随机数。