【发布时间】:2012-09-11 05:12:39
【问题描述】:
我们会显示对应用程序的反馈,但我们只想显示 10% 的用户。 例如:如果用户总数为 1000 并且反馈应该只显示给 100 个用户。
有什么想法可以实现它的逻辑吗?
提前致谢
【问题讨论】:
-
你想随机显示还是随机获取记录????这很重要
标签: java javascript jsp web-applications
我们会显示对应用程序的反馈,但我们只想显示 10% 的用户。 例如:如果用户总数为 1000 并且反馈应该只显示给 100 个用户。
有什么想法可以实现它的逻辑吗?
提前致谢
【问题讨论】:
标签: java javascript jsp web-applications
尝试使用random 方法:
if(Math.random()<0.1) {
// show feedback
}
【讨论】:
在您的数据库中,您可以进行类似的查询
SELECT TOP X PERCENT select list
FROM TableName
通过这种方式,您只能从数据库中获取 10% 的记录并在反馈模块上显示它们。
希望这就是你要找的。p>
【讨论】:
我以前发现有用的一种模式是在会话开始时“标记”一些用户(根据您所需的分布随机)。然后详细记录标记用户对您的应用程序所做的一切。他们给出的任何反馈都可以放在上下文中。至于机制,我会为初始会话标记使用过滤器,然后在屏幕顶部为标记的用户显示一个不显眼的栏,提示他们(很好地)提供反馈。确保栏有一个关闭按钮。
【讨论】:
此代码生成一个从 0 到 9 的随机数,如果随机数为 0(10% 的机会),则可以添加反馈代码。
var randomnumber=Math.floor(Math.random()*10)
if (randomnumber == 0)
{
// do something
}
【讨论】:
random()<0.1 是否更好?
如果您真的非常需要将其精确到 10%,而不是大约 10%,您可以保留一个静态计数器变量,每次新会话开始时递增。当它达到 10 时,询问用户反馈并将计数器重置为 1。
但是,您可能需要同步对变量的访问,以防止不同线程上的请求同时对其进行操作,如果您要处理大量请求,这可能会成为性能瓶颈。
除非你有充分的理由,否则使用其他人建议的随机数方法可能会容易得多。
【讨论】:
我认为您需要考虑清楚这一点 - 以后,您可能希望您做的不仅仅是“随机显示 10%”。
如果您正在谈论使用经过身份验证的用户的应用程序,并且如果有任何潜在需要分析/理解这 10% 的响应,那么您应该执行以下操作:
【讨论】: