提前感谢您的帮助․我的 C++ 客户端服务器项目需要一个数学公式。
客户端部分有一个函数startDataGeneration(N, n, k),其中N是服务器应该生成或从文件中读取的数据总量,n是每次迭代想要的数据量从服务器发送到客户端的数据量,k是服务器上要丢弃而不发送到客户端的数据量。 我需要一个公式来计算来自服务器的数据量,以便在客户端中保留这么多内存。
案例1:
案例2:
这个公式不起作用․
n * ceil((N / (n + k)))
您可以使用 ceil((N / (n + k))) 找到迭代次数,并将其与 n 相乘以找到要发送的数据总数。但是,这会失败,因为有时在最后一次迭代时,您实际上发送的数据少于 n 条数据。
以下是解决这种情况的方法:
找到迭代次数,就像您已经做的那样。我们姑且称之为A吧。
A = ceil((N / (n + k)))
查找A-1迭代后剩余的数据。我们姑且称之为B吧。
B = N mod (n + k)
查找最后一次迭代将发送多少条数据。我们姑且称之为C吧。
如果(B< n) then C = B; else C = n
最后找到要发送的总数据量。
总计 = (A-1) * n + C
我决定只编写一个函数来循环计算它
size_t TaskManager::countIncomingSamplesNumber(uint64_t N, uint64_t n, uint64_t k)
{ size_t 计数 = 0;
while (N >= n + k)
{
N -= (n + k);
Count += n;
}
Count += std::min(N, n);
return Count;
}