【发布时间】:2017-10-15 23:01:24
【问题描述】:
我目前正在尝试实现一个函数,将 64 个字符的随机十六进制哈希转换为 0 到 100 之间的数字。到目前为止,我有以下代码:
// Random hash
hash = 'f0ca70ef5e3942314d577ad32002d247cc28f0b503f775a0af2475917867708e';
function getResolvedTicket(hash) {
let resolvedDecimal = parseInt(hash.substr(-6), 16);
console.log(resolvedDecimal); // this always prints out a 7 character int, in this case '6779022'
// Do something with resolvedDecimal to convert is to a number between 0 and 100 (with 2-3 decimals)
}
有什么优雅的方法可以做到这一点?
编辑:
我基本上使用这个可证明公平的系统,只是没有随机数:https://thebitcoinstrip.com/a-guide-to-provable-fairness-in-online-casinos/ 如果有人有兴趣阅读这个:)
【问题讨论】:
-
是否包含
0和100?您需要完全均匀的分布吗? -
转换的目的是什么?这些数字需要是唯一的还是随机的?如果两个不同的哈希生成相同的数字,这有关系吗?您应该更深入地解释问题,因为可能会有更好的整体方法。
-
目的是为一个小型赌博网站提供一个可证明公平的系统。这些数字对于哈希来说必须是唯一的,所以每次我在哈希上使用 getResolvedTicket 函数时,它都应该吐出同一张票。如果不同的哈希生成相同的数字是可以的。
-
每当创建散列时,使用散列作为查找键存储 0-100 之间的随机数
-
另外,如果票号是可预测的,知道哈希值,是否可以?
标签: javascript node.js math