javascript - 如何从 MD5 哈希生成(1-100)之间的随机数
问题描述
简单地说,我想从 MD5 哈希中生成一个介于 1-100 之间的随机数。
我将始终使用电子邮件字符串作为参数。
原因是我想创建一个简单的 a/b 测试来根据返回的数字确定特定的电子邮件布局。
这是我的解决方案,但我不知道它是否准确,坦率地说,我不完全确定我是否知道自己在做什么..
parseInt(crypto.createHash('md5').update('example@gmail.com').digest("hex"), 16) % 10**2
52 is returned
谁能带领我朝着正确的方向前进并详细解释正在发生的事情?有没有更好的办法?
谢谢。
解决方案
如果您使用库seedrandom,您可以为数字生成器播种。
播种数字生成器可确保从“零”开始时数字始终以相同的顺序生成。
它在自动生成的迷宫和游戏关卡中很棒(想想我的世界中的关卡种子)
使用这个库,您可以执行以下操作来获得一致的结果。
var myrng = new Math.seedrandom('example@example.com');
console.log("int 1: " + myrng.int32());
console.log("int 2: " + myrng.int32());
console.log("int 3: " + myrng.int32());
console.log("int 4: " + myrng.int32());
console.log('round 2, repeating the above with same seed');
myrng = new Math.seedrandom('example@example.com');
console.log("int 1: " + myrng.int32());
console.log("int 2: " + myrng.int32());
console.log("int 3: " + myrng.int32());
console.log("int 4: " + myrng.int32());
console.log('round 3, repeating the above with a different seed');
myrng = new Math.seedrandom('#example@example.com');
console.log("int 1: " + myrng.int32());
console.log("int 2: " + myrng.int32());
console.log("int 3: " + myrng.int32());
console.log("int 4: " + myrng.int32());
<script src="//cdnjs.cloudflare.com/ajax/libs/seedrandom/3.0.5/seedrandom.min.js">
</script>
推荐阅读
- swift - 我可以使用 Xcode 11 在 Mojave 上编译 swift 5.1 吗?
- flutter - 使用图像选择器“无法加载资产”
- random - 如何将随机数生成器存储在结构中?
- sql - 如何在参数之一中使用 CASE 表达式创建 SQL 命令?
- javascript - 如何强制不缓存特定的外部资源?
- python - 为什么我得到相同的预测、召回和 F1 分数?
- java - 如何初始化 Firebase 托管在 google app-engine 上的 spring-boot 应用程序
- node.js - YouTube API V3 I.1 政策限制是什么意思?
- laravel - 使用 Pusher 获取会话开始的时间
- html - 如何将传单地图设置为可能的最大高度