gpt4 book ai didi

c# - 随着时间的推移使峰值使用变平的算法?

转载 作者:太空狗 更新时间:2023-10-29 18:17:18 24 4
gpt4 key购买 nike

我有一个环境,通过在夜间凌晨接收和发送数据来为分布在 3 个时区的许多设备提供服务。这些设备的分布是根据标识号和使用模运算的简单计算伪随机确定的。这种计算的结果会产生一个不必要的人为峰值,它在夜间的某些时段消耗的资源比我想要的要多。

作为我们协议(protocol)的一部分,我可以指示设备在随后的晚上何时连接到我们的系统。

我正在寻找一种算法,它通常可以将峰值分配到一个更水平的线(尽管通常在大多数时候更高)或至少在正确的方向上插入 - 这意味着我应该花时间阅读什么样的术语。我可以使用设备的标识号、当前时间和设备的时区作为执行计算的输入。我还可以执行一些预先分析计算来创建池,从中抽取插槽,尽管我觉得这种方法可能不如我希望的那么优雅(尽管学习算法可能不是坏事......)。

(最终我将使用 C# 实现此算法,但相关性较低。)

最佳答案

如果您想避免与使用随机时间相关的峰值,请查看用于哈希表的各种哈希函数。您的阅读可能从有关该主题的维基百科文章开始:

http://en.wikipedia.org/wiki/Hash_function

基本上,将您希望的更新窗口划分到适当数量的桶中。一个选项可能是 3 小时 * 60 分钟 * 60 秒 = 10800 个桶。然后将其用作所选哈希函数的哈希表大小。您的唯一输入可能是设备 ID。不要忘记在所选时间使用 GMT。您选择的编程语言可能有许多内置的哈希函数,但如果您想从头开始实现一个,本文应该提供一些链接以帮助您入门。

这种方法优于早期的随机访问时间答案,因为它具有更好的均匀性,并且确保与可能的随机函数相比,您的访问模式将近似平坦有时会出现尖峰。

这里有一些关于如何实现各种功能的更具体的信息:

http://www.partow.net/programming/hashfunctions/index.html

关于c# - 随着时间的推移使峰值使用变平的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1704487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com