是否可以根据字符串生成伪随机数,这意味着特定字符串总是会返回相同的数字?
答案 0 :(得分:2)
您需要的不是随机,而是哈希功能。
散列算法创建输入数据的指纹。哈希通常是不可逆的,即您无法从哈希重建数据。 (但是,如果算法有缺陷,您可以生成冲突,但只要您没有做任何与安全相关的事情,就没什么可担心的了。)
不幸的是,JS中没有实现本机哈希算法,所以你必须实现自己的哈希算法。不过,这是一个SO帖子,显示了一个实现:https://stackoverflow.com/a/7616484/3908235
而且,显然有whole library with the implementation of common algorithms(感谢@MattGibson)。
答案 1 :(得分:0)
如果您想在PHP中执行此操作,则可以使用crc32。它不是 random ,但它产生的数字会根据字符串的内容而变化。并非100%保证两个不同的字符串会产生不同的数字。
示例:
$number = crc32("http://php.net/manual/en/function.crc32.php");
请注意,$number
将是无符号的32位整数,但PHP将所有整数解释为有符号整数,该值可能在32位环境(可能返回负数和正数)和64位环境之间表示不同 - 这将是只返回正数。
使用printf格式化输出以将其输出到您的html是个好主意,
printf("%u", $number);
要对不同体系结构生成的值进行比较,您还应该使用sprintf格式化字符串,只是为了安全:
$numberToStoreShareOrCompare = sprintf("%u", $number);