两台不同的电脑,可以相互通信,假设通信没有延迟。分别运行程序 A (服务端)和程序 B (客户端)。他们各自有自己的时间( timeA 、timeB ),各自的仿真速度( speedA 、speedB,可以理解为现实世界中的加速,如 10 倍速,则 1 秒相当于现实世界的 10 秒),仿真速度的最小刻度为 0.5 。
现在客户端和服务端的时间和仿真速度都不一致,要求客户端通过不断改变自己仿真速度(加速、减速)的方式,不断的逼近程序 A 的时间,最终达成时间大体一致(允许有一定的误差)。
但是每一次设置仿真速度,并不会立即响应,会有一个随机的延迟。如客户端初始的仿真速度为 5 倍速,通过对比服务端的时间,发现自己比服务端慢了,要加速追赶,所以在 t1 时刻设置了自己的仿真速度为 10 倍,则 t2 时刻才会真正的设置仿真速度为 10,t2=t1+rand(),rand()的值在 5 秒左右浮动。在 t1 到 t2 这段时间内,仍然以 5 倍速向前推进。
现在想知道客户端: 1.在什么时刻? 2.设置多少倍速? 可以让客户端慢慢的和服务端时间追平。
麻烦各位算法大佬提个思路。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.