randrange(start, stop)
hanya membutuhkan argumen integer. Jadi bagaimana saya mendapatkan angka acak antara dua nilai float?
python
random
floating-point
Mantis Toboggan
sumber
sumber
np.random.uniform(start, stop)
ataunp.random.uniform(start, stop, samples)
jika Anda ingin beberapa sampel. Kalau tidak, jawaban di bawah ini yang terbaik.Jawaban:
Gunakan acak. Seragam (a, b) :
sumber
Returns a random floating point number N such that a <= N <= b for a <= b and b <= N <= a for b < a
Dengan kata lain outputN
dapat sama dengan inputa
danb
. Dalam hal ini1.5
dan1.9
..uniform
fungsi, tetapi sebaliknya dengan salah satu.random
ataurandrange
?1.5 + random.random() * (1.9 - 1.5)
harus melakukannya, meskipun menurut spesifikasi ini tidak akan pernah kembali persis1.9
(bahkan secara teori).uniform(a, b)
diimplementasikan sebagaia + (b-a) * random()
dan mengembalikan angka acak dalam kisaran [a, b) atau [a, b] tergantung pada pembulatan github.com/python/cpython/blob/…random.uniform(a, b)
tampaknya apa yang Anda cari. Dari dokumen:Lihat di sini .
sumber
jika Anda ingin menghasilkan float acak dengan N digit di sebelah kanan titik, Anda bisa membuatnya:
argumen kedua adalah jumlah desimal.
sumber
Paling umum, Anda akan menggunakan:
Python menyediakan distribusi lain jika Anda perlu.
Jika sudah
numpy
mengimpor, Anda dapat menggunakan yang setara:Sekali lagi, jika Anda membutuhkan distribusi lain,
numpy
sediakan distribusi yang sama dengan python, dan juga banyak tambahan lainnya .sumber