代码之家  ›  专栏  ›  技术社区  ›  Thomas Ahle

短信应答延迟的概率分布

  •  6
  • Thomas Ahle  · 技术社区  · 16 年前

    我正在写一个应用程序,用短信作为通讯工具。 我选择订阅一个短信网关,它为我提供了一个这样做的API。

    API具有以下功能: 发送 以及 牵引 新消息。但是它没有任何种类的 推 功能。

    为了最有效地进行查询,我在寻找人们在回答文本消息之前等待多长时间的数据——作为概率函数。

    额外信息:

    • 这个应用程序是交互式的(可以),所以我想时代将非常类似于现实生活中的人类交流。
    • 我不认为个人风格的差异会对正确的查询时间和频率产生很大影响,所以平均数据应该是好的。

    更新

    我被收到的许多伟大的答案所打动和磨练。我得出的结论是,我的最佳策略是一些适应性启发法,包括指数(或多项式)退避。

    一直以来,我都在收集统计数据以备日后分析。也许会出现什么。我想我会从概率分布生成投票序列的算法开始作弊。那会很有趣的。

    再次感谢。

    4 回复  |  直到 14 年前
        1
  •  2
  •   vad    16 年前

    在没有任何实际数据的情况下,最好的解决方案可能是编写代码,以便应用程序根据当前的响应时间历史调整等待时间。

    基本思路如下:

    第一步:设置每X秒拉一次的初始频率。

    第2步:在Y持续时间内以上述频率拉消息。

    步骤3:如果您发现消息总是在等待您拉减x,否则增加x。

    几个设计注意事项:

    1. 永远调整或在某个时间之后停止

      您可以永远重复步骤2和3,在这种情况下,应用程序会根据SMS模式动态地调整自身。或者,您可以在一段时间后停止,以减少应用程序开销。

    2. 调整标准:每个客户或所有客户

      您可以选择在步骤3中对每个客户或所有客户进行调整。

    我相信Gmail的smtp服务是沿着同一条线工作的。

        2
  •  1
  •   Phill Pafford    16 年前

    好吧,我建议按地理位置和年龄组查找一些关于每日短信/短信使用情况的统计数据,并得出每日平均值,但这并不是一个精确的衡量标准。

        3
  •  1
  •   Grembo    16 年前

    问得好。

    考虑到人们可能有多个任务,而回答文本消息可能是其中之一。如果这些任务中的每一个都花费了指数分布的时间,那么回答文本消息的时间就是这些任务完成时间的总和。n个IID随机变量之和具有伽马分布。

    文本返回之前的任务数也有一个dicrete分布——假设它是泊松分布。我没有时间推导出结果分布,但是使用@risk模拟它,我得到了威布尔分布或伽玛分布。

        4
  •  1
  •   beggs    16 年前

    短消息服务是一种存储转发的消息服务,因此您必须添加各种短消息服务中心可以添加的延迟。如果您连接到一个大型聚合公司(Sybase、TNS、MBlox等)商业批量短信提供商(Clickatel等),则需要允许消息横穿其网络以及运营商网络。如果您使用的是较小的商店,那么很可能他们使用的是GSM调制解调器(或调制解调器),并且可以接收和处理的消息(以及推出)的吞吐量有限制。

    所有这些都表明,如果你使用的是直接连接或某个大人物Mo(移动发起)的消息作为一个CP(内容提供商)发送给你,需要不到5秒钟的时间。再加上移动用户回复的时间。

    我想说的是,我以前工作过的服务中的轶事证据,移动用户需要提供一个简单的回复,通常在10秒钟之内,或者根本不需要。

    如果你在投票寻找特定的回复,我会在5秒和10秒的时候投票,然后应用指数后退。

    所有这些都是从北美的角度来看的。欧洲将相当接近,但非洲、亚洲等地的网络速度将稍慢一些。(除非您直接连接到操作员,甚至其中一些速度较慢)。