You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中random.seed函数如何处理字符串?字符串会转为哪个数字?

字符串种子"hello world!"对应的数字种子

在Python的random模块里,当你传入字符串作为种子时,它不会直接报错,因为内部会把字符串转换成一个固定的整数种子来使用。

具体转换逻辑

字符串会先被编码成字节序列,接着通过SHA-1哈希算法生成一个160位的哈希值,最后把这个哈希值转成十进制整数,这就是实际用来初始化随机数生成器的种子。

对应数字

"hello world!"对应的整数种子是:
1258229191115973813532038269555766883030868369389

验证代码

你可以用下面的代码确认这个结果,两次调用random.choices的输出会完全一致:

import random
import hashlib

def get_string_seed(s):
    sha1_digest = hashlib.sha1(s.encode()).digest()
    return int.from_bytes(sha1_digest, byteorder='big')

# 计算字符串对应的种子数值
seed = get_string_seed("hello world!")
print(seed)

# 用数字种子生成随机序列
random.seed(seed)
print(random.choices([1,2,3,4,5,6,7], k=10))

# 用字符串种子生成随机序列
random.seed("hello world!")
print(random.choices([1,2,3,4,5,6,7], k=10))

内容的提问来源于stack exchange,提问作者Johannes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 17:40:40