我希望能够将包含任何utf-8的任何字符串更改为0到1之间的随机数。
我可以使用以下内容转换任何数字种子:
Math.abs(Math.sin(seed));
由此我可以生成伪种子Math.random()
- 就像数字一样。
所以它将字符串转换为数字。我研究了使用加密技术,发现制作字符串的摘要有效,但速度非常慢,而且有点矫枉过正。
关于如何实现这一目标的任何想法?
答案 0 :(得分:1)
使用String.prototype.charCodeAt()可以生成整数表示:
function stringToSeed(str){
var values = [];
for (var i = 0, len = str.length; i < len; i++) {
values.push(str.charCodeAt(i));
}
// concatenatte and coerce to integer
return values.join('') + 0;
}
var seed = stringToSeed(string);
然后你可以像以前一样将这粒种子传给罪。
连接背后的想法而不是简单地添加值是为了确保将顺序考虑为随机性,否则&#34; AB&#34;和&#34; BA&#34;例如,会产生相同的值。