|
4
|
| David Allan Finch · 技术社区 · 17 年前 |
|
|
1
5
现在的问题是,你是需要一个真正的随机映射,还是仅仅需要一个“弱”置换。假设是后者,如果你在2的补码算术上使用无符号32位整数(比如)进行运算,那么乘以任何奇数都是一个双射可逆映射。当然,XOR也是如此,所以你可以尝试使用的一个简单模式是,例如。
数字中没有什么神奇的。所以你可以改变它们,甚至可以随机化。唯一的问题是被乘数必须是奇数。您必须使用滚动计算(忽略溢出)。这可以颠倒过来。要进行求逆,您需要能够计算出正确的互补被乘数A和B,之后求逆为
你可以用数学方法计算A和B,但对你来说更容易的事情就是运行一个循环并搜索它们(一旦离线)。
|
|
|
2
3
你可以试着建造一个合适的 Feistel network |
|
3
1
假设你的目标是在整个范围内分散分组值,
代码将只是一个简单的掩码、移位和加法序列。 |
|
|
4
0
然后,您可以使用普通迭代器获取所有整数。记住用srand()和time或任何其他伪随机值初始化random。 |
|
|
5
0
对于这组约束,确实没有解决方案。尝试将32位无符号哈希转换为32位无签名哈希,会导致冲突,除非你做一些简单的事情,比如1到1的映射。每个数字都是自己的哈希值。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |