以可预测的方式在远程环境中同步两个时钟

时间:2016-05-23 14:24:01

标签: algorithm math time clock

我没有任何数学背景,所以请原谅我的语言。

动机

  • 两台运行时钟的计算机正在重置为相同的值(整数,即1464009526876)。
  • 此时此两台计算机之间将无法进行通信
  • 由于各种原因,这两个时钟最终会失去同步
  • 我只对那些专门从时钟中调用数据的函数感兴趣,由于机器之间可能存在差异,两者之间可能会有不同的电话号码
  • 我不关心价值本身
  • 我确实关心每次通话不同,并且两端总体上相同
  • 我愿意牺牲这个价值不会改变的一定时间

问题

假设有两个正整数(a,b),它们的差值不大于(d),这是一个可以预先确定的常数。

算法接受一个数字(a | b)作为输入,将输出一个相对于两者的新整数,希望放在两者之间。

这两个整数都是相同的,基本上都是定义范围内的所有数字。

例如

a = 1464009526876;

b = 1464009514876;

alg(a); // output: 1464009526800

alg(b); // output: 1464009526800

我的总体挑战是同步两个数字,并尝试生成不同的值,但有点接近初始重置值和/或平均/相对时间。

使用NTP不会因为需要poll数据而削减它(同样,如前所述,我不关心值本身,只是因为它是相同的并且相对于原始重置值。)

2 个答案:

答案 0 :(得分:0)

在现实条件下无法计算出这一点。

即使是简化版本,您只是想知道另一个时钟是否领先或落后于您同样是不可能的。你不是精神上的。

你基本上需要一个位置方程(量子时间是"时间"和"位置"是计算机认为它的时间)。双方都需要事先知道。

通过收集数据和推断,您可以很好地估计每个位置图的样子。

如果你有这个,那么找到解决方案就很简单了。

如果它结束了你的时间,你可以将这个值插入你的位置方程中,以获得量子"时间。然后你可以使用该值来找出它在另一端的时间。

然后你必须解决创建另一个方程式的问题,你可以将这两个数字插入并获得算法结果所需的值。没有更多信息,很难说它可能是什么样子。

当然这是一个高级别的解释,但数学不应该太难实现。显然,我不确定这会如何反映现实世界。

答案 1 :(得分:0)

我建议获取当前时间,然后四舍五入到最接近的秒(毫秒,无论如何)。

为了使其工作,您需要两个系统让他们的时间几乎同步。您可以安全地假设时钟每天不会超过1/2秒。因此,如果您的两个系统每天都调用一些NTP服务来获取当前时间,那么您可以假设这两个系统彼此相距1/2秒。