gpt4 book ai didi

c++ - 从一个范围映射到另一个范围时避免重复值

转载 作者:行者123 更新时间:2023-11-28 05:32:36 24 4
gpt4 key购买 nike

我实现了一个函数,它将 (-109) - 147 范围内的唯一数字 vector 映射到 0 - 159 的新范围 以下 this .

映射到目前为止工作正常,所有数字都转移到正确的范围。我对第二个 vector 重复了这个(新范围 0 - 119)

我面临的问题是每对数字(每个 vector 中的一个)代表 160x120 图像中的一个位置,因此应该是唯一的。由于需要在返回 float 的映射函数中进行除法,我使用 round() 转换为 int (116.341 -> 116)。但这会导致点对不再唯一的问题:

Point     ->    new Range   -> round()
--------------------------------------
177x(-99) -> 117.670x3.9608 -> 118x4 !
176x(-99) -> 117.006x3.9608 -> 118x4 !

已正确映射到所需范围,但现在代表相同的点并且不再是唯一的。 重要的是:每个点都被映射到新范围并且没有信息丢失,例如重复项被丢弃。 (点对包含必须维护的更多颜色信息。)

有没有办法解决这个问题?

最佳答案

由于 Dirichlet pigeonhole principle,不可能为不同范围的整数(不同幂的集合)创建一对一映射

请注意,如果可逆映射是可能的,您可以创建具有无限压缩的存档器并将任何大小的文件压缩到一个或几个字节,然后恢复它

关于c++ - 从一个范围映射到另一个范围时避免重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39105565/

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