【发布时间】:2011-03-03 21:06:05
【问题描述】:
我想要一个函数的算法,它接受 n 个整数并返回一个整数。对于输入的微小变化,得到的整数应该变化很大。尽管我参加了许多数学课程,但我并没有太多地使用这些知识,现在我需要一些帮助......
这个函数的一个重要属性应该是,如果它与坐标对一起使用作为输入并且结果被绘制在图像上(例如作为灰度值),任何重复图案应该只有在图像非常大。
我尝试了各种伪随机数算法,但收效甚微,最后令我震惊的是,md5 几乎符合我的标准,只是它不适用于数字(至少据我所知不是)。这导致了类似于这个 Python 原型的东西(对于 n = 2,它可以很容易地更改为采用整数列表):
import hashlib
def uniqnum(x, y):
return int(hashlib.md5(str(x) + ',' + str(y)).hexdigest()[-6:], 16)
但是当输入和输出都是整数时,显然遍历字符串是错误的。什么是这个实现的好替代品(在伪代码、python 或任何语言中)?
【问题讨论】:
标签: algorithm math function numbers random