我该如何将字符串(例如用户ID加盐)转换为看似随机但实际上是确定性可重复的均匀概率,范围为[0.0, 1.0)?这意味着输出值≥0.0且<1.0。输出分布必须是均匀的,无论输入分布如何。例如,如果输入字符串为'a3b2Foobar',则输出概率可以重复为0.40341504。
跨语言和跨平台的算法可重现性是可取的。除非有更好的方法,否则我倾向于使用哈希函数。以下是我的代码:
我正在使用最新稳定版的Python 3。请注意,这个问题类似于但并不完全相同于相关问题convert an integer to a random but deterministically repeatable choice。
跨语言和跨平台的算法可重现性是可取的。除非有更好的方法,否则我倾向于使用哈希函数。以下是我的代码:
>>> in_str = 'a3b2Foobar'
>>> (int(hashlib.sha256(in_str.encode()).hexdigest(), 16) % 1e8) / 1e8
0.40341504
我正在使用最新稳定版的Python 3。请注意,这个问题类似于但并不完全相同于相关问题convert an integer to a random but deterministically repeatable choice。