小程序里,JS怎么对一个字符串哈希后取模?

我想实现一个输入名字就能获得随机答案的需求,但是输入相同的名字会获得相同的答案。
看了看帖子说是要对数字哈希取模,现在我把用户输入的名字转码成了5位数字。接下来该怎么对它哈希取模,获得一个指定范围内的固定随机数呀?

onLoad: function(options) {

this.data.name = wx.getStorageSync('name');
this.setData({
  name: this.data.name
});

this.setData({
  words: this.data.name.charCodeAt(0)
});
阅读 3k
3 个回答
> var codes = '中国'.split('').reduce((item,item2)=>item.charCodeAt()+','+item2.charCodeAt())
< undefined

> codes
< "20013,22269"

通过字符串的,先将字符串进行分割,然后对每个字符进行 charCodeAt() 存码。这就是上面代码所做的。
然后将字符串然后存库处理。

直接装个 md5 的包咯,然后 import 进来就行了。不过需要注意,小程序原生不支持解析 node_modules,所以 import md5 from 'md5' 是不行的,要 import md5 from '../../node_modules/md5/md5.js'(这里的目标 js 你要确认下,我没仔细看)。

我用的是这个方法,不知道正确不。

Math.seed = this.data.words;
Math.seededRandom = function(max, min) {
  max = max || 0;
  min = min || 10;
  Math.seed = (Math.seed * 9301 + 49297) % 233280;
  var rnd = Math.seed / 233280.0;
  return min + rnd * (max - min);
};
for (var i = 0; i < 10; i++) {
  console.log(Math.seededRandom());
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题