36得票11回答
整数的对称双射算法

我需要一个算法,可以将一个32位有符号整数映射到另一个32位有符号整数,实现一对一的映射(即无冲突)。 我真正关心的是足够的熵,使得函数的输出看起来是随机的。基本上,我正在寻找一种类似于异或密码的密码,但可以生成更具任意性的输出。安全性并不是我真正关心的问题,尽管模糊性是。 为了澄清目的,...

21得票1回答
将双射映射提升为函子

也许我没有看到显而易见的事情,但我正在尝试清理一个使用Scalaz 7的项目中的一些样板文件,并且我没有找到一个似乎非常简单和可能有用的拼图。 假设我们有两种类型之间的双向对应关系:case class Foo(x: Int) case class Bar(i: Int) import s...

15得票2回答
有没有一种确定的方法可以编写解析器,可以重构其精确输入?

假设我想解析一种语言 X 的文件。实际上,我只对信息中的一个小部分感兴趣。可以很容易地使用Haskell的许多eDSL之一(例如Megaparsec)编写一个解析器来实现这个目的。data Foo = Foo Int -- the information I'm after. parseF...

10得票2回答
高效的有限双射函数数据结构

我正在寻找一种能够表示两种类型之间的有限双射的功能性数据结构,既可以实现高效使用空间也能实现高效查询。 例如,假设有一个大小为n的双射f: - 使用O(ln n)的复杂度扩展f以增加新的元素对。 - 查询f(x)或f^-1(x)的复杂度为O(ln n)。 - f的内部表示比具有2个有限映射...

7得票5回答
双射的“整数<->字符串”函数

这是一个我正在努力寻找最佳解决方案的问题。我有一组有限的非负整数,范围在[0...N]之间。我需要能够将此集合中的每个数字表示为字符串,并能够将这样的字符串转换回原始数字。因此,这应该是一个双射函数。 其他要求如下: 1. 数字的字符串表示应该至少在某种程度上混淆原始数字。因此,像f(x)...

7得票2回答
是否有不带隐藏状态的“好”的伪随机数生成器?

我需要一些好的伪随机数生成器,它可以像纯函数一样从先前的输出计算而来,不需要任何状态隐藏。在“好的”条件下,我指: 我必须能够对发生器进行参数化,以便使用任何参数(或其中的一些大型子集)运行它2^n次迭代,应该涵盖所有或几乎所有值0和2^n - 1之间,其中n是输出值中的位数。 如果我为其...

7得票2回答
伪随机的一对一int32->int32函数

我正在寻找一个int32-&gt;int32函数,它应当: 具有双射性(一一对应) 至少在一个方向上计算简单 将递增序列0, 1, 2, 3, ... 转换成类似于良好的伪随机序列(当参数变化较小时约有一半的位翻转,没有明显的模式)