将数字转换为相同范围内的另一个数字,然后返回

时间:2012-12-15 14:39:57

标签: php math theory

我正在寻找一种解决方案,将给定范围内的所有数字转换为相同范围内的另一个数字,然后将该数字转换回来。

更具体,假设我有数字1..100

将所有数字转换为同一范围内的另一个数字的最简单方法是使用:b = 99 -a;稍后使用a = 99 - b;获取原始数据。

我的问题是我想模拟一些随机性

我想在PHP中实现它,但编码语言并不重要。

WHY吗

你可能会说为什么?好问题:)

我正在基于id - s生成一些易于阅读的短代码字符串,并且因为id逐个递增,所以我的连续短代码太相似了。 后来我需要“解码”短代码,以获得id。

我的算法现在正在做的是:

0000001 -> ababac0000002 -> ababad0000003 -> ababaf

ababac -> 0000001ababad -> 0000002ababaf -> 0000003

所以在我实际生成短代码之前,我想尽可能“随机化”这个数字。

2 个答案:

答案 0 :(得分:1)

选项1: 你为什么不拥有转换数据库?即每条记录都有一个“真实”ID,一个“随机md5”字符串或其他东西

选项2: 使用彩虹表 - 甚至可能是MD5查找表,范围为0 - 10,000或其他。然后只做一个哈希表查找

答案 1 :(得分:0)

最后,我在数学论坛上找到了基于模块运算符的解决方案。 解决方案可以在这里找到:

https://math.stackexchange.com/questions/259891/function-to-convert-each-number-in-a-m-n-to-another-number-in-the-same-range