如何在Python中模拟C语言rand()函数?实现指定种子的随机值生成
用ctypes模拟C语言rand()生成逻辑
由于Python内置的random模块使用的随机数算法和C标准库的rand()不同,要匹配你提供的C代码逻辑,直接用ctypes调用系统C库的srand()和rand()即可,已知种子时能精准复现后续随机值。
实现代码
import ctypes import platform # 加载对应平台的C标准库 if platform.system() == "Windows": c_stdlib = ctypes.CDLL("msvcrt") else: # Linux/macOS通用加载方式 c_stdlib = ctypes.CDLL("libc.so.6") # 替换为你已知的种子值 known_seed = 123456 c_stdlib.srand(known_seed) # 生成和C代码一致的随机值 random_value1 = c_stdlib.rand() random_value2 = c_stdlib.rand() random_value3 = c_stdlib.rand() print(random_value1, random_value2, random_value3)
说明
- 代码会根据操作系统加载对应的C标准库:Windows用
msvcrt,Linux和macOS用libc.so.6 - 调用
c_stdlib.srand(known_seed)设置种子,和C代码的srand(seed)完全等价 - 连续调用
c_stdlib.rand()就能得到和C代码相同的随机值序列
内容的提问来源于stack exchange,提问作者bd55
相关产品推荐
相关产品推荐

