Я пытаюсь воспроизвести коды R в Python, и мне нужно сгенерировать одинаковые случайные числа на обоих языках. Я знаю, что использование одного и того же начального числа недостаточно для получения одинаковых случайных чисел и чтения одного из ответов на этой платформе относительно этой топи c Я обнаружил, что существует: SyncRNG библиотека, которая генерирует те же случайные числа числа между R и Python. Все выглядит хорошо, пока я обнаружил, что на Python 3.7.3 я могу сгенерировать через SyncRNG только одно число, потому что, как только вы выполните итерацию процедуры, например, для l oop, вы получите эту ошибку:
OverflowError: Python int слишком велик для преобразования в C long.
Как я уже говорил:
>>> from SyncRNG import SyncRNG
>>> s = SyncRNG(seed=123)
>>> r = s.rand()
>>> r
0.016173338983207965
и, как мы видим, это работает. Метод ".rand ()" генерирует случайные числа от нуля до единицы. Но если я попытаюсь повторить:
>>> from SyncRNG import SyncRNG
>>> s = SyncRNG(seed=123)
>>> b = []
>>> for i in range(5):
temp = s.rand()
b.append(temp)
и получу это:
OverflowError: Python int too large to convert to C long
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "<pyshell#41>", line 2, in <module>
temp = s.rand()
File "C:\Users\Stefano\AppData\Local\Programs\Python\Python37\lib\site-packages\SyncRNG\__init__.py", line 27, in rand
return self.randi() * 2.3283064365387e-10
File "C:\Users\Stefano\AppData\Local\Programs\Python\Python37\lib\site-packages\SyncRNG\__init__.py", line 22, in randi
tmp = syncrng.rand(self.state)
SystemError: <built-in function rand> returned a result with an error set
Итак, я скромно спрашиваю, может ли кто-нибудь решить эту проблему. Если я потерял старые ответы об этом топи c Извините, пожалуйста, свяжите их в разделе ответов. Спасибо!