看了某鸟上的教程,发现seed函数可以接受2个参数
但是使用时只有第一个参数有用,而第二个参数看起来像个摆设,请问为何要加入第二个参数
python seed函数
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- Lonelypatients° 2021-08-16 23:23关注
For version 2 (the default), all of the bits are used if *a* is a str, bytes, or bytearray. For version 1 (provided for reproducing random sequences from older versions of Python), the algorithm for str and bytes generates a narrower range of seeds.
翻译如下:
对于版本2(默认值),如果a是str,则使用所有位,
字节,或者bytearray。版本1(用于随机复制
str和的算法字节生成更窄的种子范围。也就是第二个参数值version, 不传时默认是2版本,
底层代码:def seed(self, a=None, version=2): """Initialize internal state from hashable object. None or no argument seeds from current time or from an operating system specific randomness source if available. If *a* is an int, all bits are used. For version 2 (the default), all of the bits are used if *a* is a str, bytes, or bytearray. For version 1 (provided for reproducing random sequences from older versions of Python), the algorithm for str and bytes generates a narrower range of seeds. """ if version == 1 and isinstance(a, (str, bytes)): a = a.decode('latin-1') if isinstance(a, bytes) else a x = ord(a[0]) << 7 if a else 0 for c in map(ord, a): x = ((1000003 * x) ^ c) & 0xFFFFFFFFFFFFFFFF x ^= len(a) a = -2 if x == -1 else x if version == 2 and isinstance(a, (str, bytes, bytearray)): if isinstance(a, str): a = a.encode() a += _sha512(a).digest() a = int.from_bytes(a, 'big') super().seed(a) self.gauss_next = None
也就是说不传时, a 也就是第一参数为是使用 字节或 bytearray类型,
传入 1时, 用于随机str 的算法字节生成更窄的种子范围。
从示例中可以看出:import random random.seed('100') print(random.random()) random.seed('100',1) print(random.random()) # 结果 0.35677737212581095 0.5211604367458436
解决 3无用
悬赏问题
- ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
- ¥50 安装华大九天aether
- ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
- ¥15 setInterval 页面闪烁,怎么解决
- ¥15 如何让企业微信机器人实现消息汇总整合
- ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
- ¥15 如何用Python爬取各高校教师公开的教育和工作经历
- ¥15 TLE9879QXA40 电机驱动
- ¥20 对于工程问题的非线性数学模型进行线性化
- ¥15 Mirare PLUS 进行密钥认证?(详解)