Python 有模仿 C 的 rand() 序列的函数吗?

use*_*632 0 c python random

我正在寻找一个Python函数,它将模仿c中rand()(和srand())的行为,并满足以下要求:

  1. 我可以在 srand() 的 Python 等效项中提供相同的纪元时间来为函数提供种子
  2. 如果提供了相同的种子,则 rand()%256 的等效项应产生与 c 中相同的 char 值。

到目前为止,我已经考虑了随机库和numpy的随机库。尽管两者都在其随机函数上产生从 0 到 1 的浮点数,但不像 C 那样提供从 0 到 32767 的随机数。当尝试 random.randint(0,32767) 时,我得到的结果与 C 函数中的结果不同。

TL;DR Python 中是否存在遵循与 C 相同的随机序列的现有函数/库?

小智 7

您可以CDLL通过https://docs.python.org/3/library/ctypes.html来完成此操作

from ctypes import CDLL

libc = CDLL("libc.so.6")
libc.srand(42)
print(libc.rand() % 32768)
Run Code Online (Sandbox Code Playgroud)