如何在Python中使用给定的字符串生成随机数?

4

在不同的Python解释器中,hash函数会给出不同的值,那么有没有更稳定的函数?

更新一:

"稳定"的意思是当字符串相同时,该函数应在任何时候都给出相同的数字。但hash无法实现这一点。

我想要像这样的一个函数:

def generate_random_number_by_string(string:str)->int:
    pass

例如,generate_random_number_by_string("16")应该在任何时候都相同。

你能定义“稳定”吗?这对你的应用程序有什么影响吗? - ggorlen
嗨,@ggorlen。 "stable" 意味着当字符串相同时,函数应该在任何时候都给出相同的数字。 hash 无法做到这一点。 - DachuanZhao
1个回答

7
您可以使用来自 hashlib 的哈希。例如:
import hashlib
int(hashlib.sha256(b'yourstring').hexdigest(), base=16)

@DachuanZhao 是的,sha256哈希会完全均匀地分布其值。 - Arty
@DachuanZhao 上面的代码提供了从0到2^256-1范围内整数的均匀分布。 - Arty
@Arty 好的,够了。非常感谢~~~ - DachuanZhao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接