Diskusi JAUHARI AFIF RAMADANA

Selesai
JAUHARI AFIF RAMADANA
Ditanyakan pada: Pengenalan Function Di Javascript

Mau tanya tentang Math.random dan Math.floor sesuai di video

Kenapa ya kalau di consol hasilnya sama seperti nilai awal jadi 3 semua sudah saya terapkan di beberapa browser tetap sama saja , sedangkan saat saya menggunakan nodejs hasilnya normal bisa menghasilkan angka acak dari 1 sampai 6. kira kira salah dimananya ya?

screenshot : https://telegra.ph/file/713926c32a4b0ab36ee31.jpg

2 Jawaban

Avatar
Faisal Hanafi

setahun yang lalu

Jadi gini kak pada dasarnya, fungsi Math.random() digunakan untuk menghasilkan bilangan acak antara 0 (inklusif) dan 1 (eksklusif). Kemudian, kakak mengalikan hasilnya dengan 6 dan membulatkannya ke bawah menggunakan fungsi Math.floor(). Selanjutnya, kakak menambahkan 1 pada hasilnya agar nilai yang dihasilkan berada dalam rentang antara 1 sampai 6.

Apabila kakak menjalankan kode ini di console di browser, maka hasil yang dikeluarkan akan bergantung pada implementasi dari console tersebut. Beberapa console pada browser mungkin mengimplementasikan Math.random() menggunakan generator angka acak yang sama setiap kali console dijalankan, sehingga menghasilkan nilai yang sama setiap kali kakak menjalankan kode tersebut.

Namun, pada Node.js, Math.random() diimplementasikan menggunakan generator angka acak yang berbeda setiap kali program dijalankan, sehingga nilai yang dihasilkan berbeda-beda setiap kali program dijalankan.

Jadi, kemungkinan masalah terletak pada implementasi dari console di browser yang kakak gunakan. Namun, kode yang kakak gunakan seharusnya dapat menghasilkan nilai acak yang berbeda-beda setiap kali dijalankan pada lingkungan yang tepat seperti pada Node.js.

Avatar
BroKoding

setahun yang lalu

Halo kak, ini karena object lemparDadu hanya didefinisikan sekali, dan tidak nilai tidak diperbaharui secara berulang. Oleh karena itu saat ditulis pada log console hasilnya selalu sama. Kalau ingin nilainya diperbaharui maka object lemparDadu harus dilakukan assignment (pemberian nilai).