【发布时间】:2020-08-26 02:23:18
【问题描述】:
我需要一个函数,它为 [0, infinity] 上的每个自然数分配一个随机对应的自然数。例如,一个函数将一个数字和种子作为参数,并为我提供与我为给定种子提供的数字相对应的随机数。
即,
它会分配给 5 24。
它会分配给 2 12589128948。
它会分配给 3 12358。
等等,等等,等等。
我一直在考虑如何实现这一点,并没有任何有用的想法。算法必须是可播种的,这样我就可以生成同一组整数,每个整数每次都映射到这些整数。映射不一定必须是一对一的。
有人知道这是否可能吗?如何实现?
谢谢!
【问题讨论】:
-
为什么是“[0, infinity]”?为什么不是 0 到某个有界数?你能解释一下为什么需要这样的函数吗?
-
尝试一种加密,它将初始数字(被视为明文)映射到一个唯一的明显随机数(密文)。正如@Peter O 所说,您最好设置一个大小限制,否则每个密文输出都可能具有无限大小。 2^googolplex 上面的数字比它下面的数字多得多。
标签: c++ algorithm random random-seed