0

我们显示对我们应用程序的反馈,但我们只想显示 10% 的用户。例如:如果用户总数为 1000 并且反馈应该只显示给 100 个用户。

有什么想法实现它的逻辑吗?

提前致谢

4

6 回答 6

2

尝试使用以下random方法:

if(Math.random()<0.1) {
    // show feedback
}
于 2012-09-11T05:17:14.323 回答
0

此代码生成一个从 0 到 9 的随机数,如果随机数为 0(10% 的机会),则可以添加反馈代码。

var randomnumber=Math.floor(Math.random()*10)
if (randomnumber == 0)
{  
   // do something
}
于 2012-09-11T05:23:39.490 回答
0

如果您真的非常需要它精确到 10%,而不是大约 10%,您可以保留一个静态计数器变量,每次新会话开始时都会增加该变量。当它达到 10 时,询问用户反馈并将计数器重置为 1。

但是,您可能需要同步对变量的访问,以防止不同线程上的请求同时对其进行操作,如果您要处理大量请求,这可能是性能瓶颈。

除非您有充分的理由,否则使用其他人建议的随机数方法可能要容易得多。

于 2012-09-11T05:32:10.287 回答
0

我认为你需要考虑清楚这一点——在路上,你可能希望你做的不仅仅是“随机显示到 10%”。

如果您正在谈论使用经过身份验证的用户的应用程序,并且如果有任何潜在需要分析/理解那 10% 的响应,那么您应该执行以下操作:

  1. 在您的数据库中创建一个新的列或表,为您的反馈显示分配每个用户在 (true) 或 out (false) 中
  2. 将其用作查询的基础,以确定向谁显示消息
  3. 确保将该反馈请求的结果写回您的数据库。
于 2012-09-11T05:34:25.293 回答
0

在您的数据库中,您可以进行如下查询

SELECT TOP X PERCENT select list
FROM TableName

这样,您只能从 DB 中获取 10% 的记录并将它们显示在反馈模块上。

希望这就是你要找的。

于 2012-09-11T05:19:34.057 回答
0

我以前发现有用的一种模式是在会话开始时“标记”一些用户(根据您所需的分布随机)。然后详细记录标记用户对您的应用程序所做的一切。他们给出的任何反馈都可以放在上下文中。至于机制,我会为初始会话标记使用过滤器,然后在屏幕顶部为标记的用户显示一个不显眼的栏,提示他们(很好地)提供反馈。确保栏有一个关闭按钮。

于 2012-09-11T05:21:04.527 回答