【发布时间】:2016-04-05 00:17:20
【问题描述】:
我希望能够将任何包含任何 utf-8 的字符串更改为 0 到 1 之间的随机数。
我可以使用以下数字转换任何种子:
Math.abs(Math.sin(seed));
由此我可以生成一个伪种子Math.random()-like 数字。
所以它将字符串转换为数字。我研究了使用加密,发现对字符串进行摘要是可行的,但速度非常慢,而且有点矫枉过正。
关于如何实现这一点的任何想法?
【问题讨论】:
-
以
crypto.randomBytes()开头。 -
你知道
Math.sin()会给你一个偏向1的分布吗? (还是故意的?) -
@duskwuff 以何种方式向 1 倾斜?
-
@BrandonSmith sin(x) 的导数在 sin(x) 接近 0 时最大,在接近 ±1 时最小;这意味着它最终花费更少的“时间”接近于零。
-
@duskwuff 非常有趣。你能推荐一个我可以使用的替代方案吗?
标签: javascript node.js random cryptography random-seed