Saya tidak mengerti mengapa default_rng.integers(2**32)
selalu mengembalikan 0, sedangkan 2**32-1
, 2**32+1
, 2**40
, dll. Mengembalikan angka acak seperti yang diharapkan. Hasilnya adalah numpy.int64
, jadi saya berharap bisa menghasilkan angka hingga 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]
Tidak masalah dengan 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]
Saya menjalankan Fedora 31 dengan python3-3.7.6-2.fc31.x86_64 dan 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)]
Mungkin itu menggunakan generator 32bit di latar belakang untuk kecepatan yang lebih tinggi, tetapi kemudian secara tidak sengaja melemparkan 2**32 + 1
ke 32bit! Ini pasti bug yang cukup serius.
Masalahnya ada di master juga:
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])
Ini mungkin diperkenalkan di https://github.com/numpy/numpy/pull/14777. Aku akan melihatnya.
Terima kasih @WarrenWeckesser , masalahnya juga di 1,17, jadi mungkin lebih lama dari commit Anda. Tapi saya pikir sekarang ini sudah masuk jauh ke dalam kode dan Anda sepertinya tahu bagian itu. Hebat sekali, baru saja mempertimbangkan untuk melakukan ping ke Kevin :).
Jika kami berhasil, kami harus mencoba memasukkan perbaikan di 1.18.4 saya kira.
@seberg , gh-14777 di-backport ke 1,17.
Ternyata penyebabnya adalah https://github.com/numpy/numpy/pull/14501 , yang di-backport ke 1.17.3. Saya sedang memperbaikinya.
Perbaikan yang diusulkan ada di https://github.com/numpy/numpy/pull/16076
Komentar yang paling membantu
Masalahnya ada di master juga:
Ini mungkin diperkenalkan di https://github.com/numpy/numpy/pull/14777. Aku akan melihatnya.