Numpy: default_rng.integers (2 ** 32) تُرجع دائمًا 0

تم إنشاؤها على ٢٤ أبريل ٢٠٢٠  ·  7تعليقات  ·  مصدر: numpy/numpy

مثال على إعادة إنتاج الكود:

لا أفهم سبب إرجاع default_rng.integers(2**32) دائمًا 0 ، بينما يعرض 2**32-1 ، 2**32+1 ، 2**40 ، إلخ. أرقامًا عشوائية كما هو متوقع. والنتيجة هي numpy.int64 ، لذلك توقعت أن أكون قادرًا على توليد أرقام تصل إلى 2**64-1 .

$ python3.7 -c 'from numpy.random import default_rng; rng=default_rng(); print([rng.integers(2**32) for _ in range(5)])'
[0, 0, 0, 0, 0]

لا بأس مع 2**40 :

$ python3.7 -c 'from numpy.random import default_rng; rng=default_rng(); print([rng.integers(2**40) for _ in range(5)])'
[386296210341, 896689857600, 958588149890, 364800985883, 643738305251]

معلومات إصدار Numpy / Python:

أنا أقوم بتشغيل Fedora 31 باستخدام python3-3.7.6-2.fc31.x86_64 و python3-numpy-1.17.4-2.fc31.x86_64:

vstinner@apu$ python3.7
Python 3.7.6 (default, Jan 30 2020, 09:44:41) 
[GCC 9.2.1 20190827 (Red Hat 9.2.1-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys, numpy; print(numpy.__version__, sys.version)
1.17.4 3.7.6 (default, Jan 30 2020, 09:44:41) 
[GCC 9.2.1 20190827 (Red Hat 9.2.1-1)]
00 - Bug 06 - Regression numpy.random high

التعليق الأكثر فائدة

المشكلة في الماجستير أيضًا:

In [1]: import numpy as np

In [2]: np.__version__
Out[2]: '1.19.0.dev0+6d6df47'

In [3]: rng = np.random.default_rng()

In [4]: rng.integers(2**32, size=8)
Out[4]: array([0, 0, 0, 0, 0, 0, 0, 0])

ربما تم تقديم هذا في https://github.com/numpy/numpy/pull/14777. سألقي نظرة.

ال 7 كومينتر

ربما يستخدم مولد 32 بت في الخلفية لسرعات أعلى ، لكنه يلقي بعد ذلك 2**32 + 1 إلى 32 بت عن طريق الصدفة! إنه بالتأكيد خطأ خطير جدًا.

المشكلة في الماجستير أيضًا:

In [1]: import numpy as np

In [2]: np.__version__
Out[2]: '1.19.0.dev0+6d6df47'

In [3]: rng = np.random.default_rng()

In [4]: rng.integers(2**32, size=8)
Out[4]: array([0, 0, 0, 0, 0, 0, 0, 0])

ربما تم تقديم هذا في https://github.com/numpy/numpy/pull/14777. سألقي نظرة.

شكرًا WarrenWeckesser ، المشكلة أيضًا في 1.17 ، لذلك قد تكون أقدم من

إذا تمكنا من ذلك ، يجب أن نحاول تضمين الإصلاح في 1.18.4 على ما أعتقد.

seberg ، gh-14777 تم نقله إلى 1.17.

اتضح أن السبب هو https://github.com/numpy/numpy/pull/14501 ، والذي تم نقله إلى 1.17.3. أنا أعمل على الإصلاح.

الإصلاح المقترح في https://github.com/numpy/numpy/pull/16076

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

sturlamolden picture sturlamolden  ·  68تعليقات

mrava87 picture mrava87  ·  53تعليقات

shoyer picture shoyer  ·  54تعليقات

gasparka picture gasparka  ·  78تعليقات

ghost picture ghost  ·  49تعليقات