我正在开发一个网站,用户可以在其位置附近搜索“某物”(在英国)。可能会说最多10个匹配结果,但客户端只希望在任何时候显示3个结果。因为每个'某事'支付的金额相同,所以每个'某事'都应该有相同的显示机会......而且每次同一个用户进行搜索时这些结果都不会改变。
我正在考虑将用户邮政编码用作种子,并从匹配列表中随机选择3个结果。这是实现这一目标的好方法吗?我的其他选择是什么?
答案 0 :(得分:1)
您可以将发起请求的IP地址的最后两个八位字节用作随机种子。这将为您提供一些均匀分布的65,536种可能的种子值。然后我会在cookie中将它们的IP地址设置回它们,以防它们通过随机连接它们所连接的外部地址的网络进行连接。如果存在cookie,您将使用cookie的值,否则使用它们的实际地址。
我说最后两个八位字节而不是前两个八位字节,因为使用前两个八位字节会导致例如同一本地ISP的所有用户最终收到相同的结果,我希望用户可以更均匀地分配最后两个八位字节。
请注意,例如通过一个地址路由所有流量的公司或大学,该机构的所有用户都会看到相同的结果。
如果您对cookie的想法不反对,请设置1年左右的cookie,每次访问时更新,包含64位左右的随机垃圾。然后用它作为你的种子。
答案 1 :(得分:1)
如果你想让它随机显示哪些项目,为什么不使用PHP的rand function来生成随机种子呢?生成种子后,您可以使用该值保存cookie。加载页面时,请检查cookie是否存在。如果是,请使用cookie中的值;如果没有,则重新生成随机数并创建一个新cookie。如果用户每次关闭浏览器时都清除cookie,那么它就不会起作用,但是大多数人都没有这样做。