Generator angka acak javascript di antara rentang

Jika Anda ingin mencari bilangan bulat acak di antara min (inklusif) hingga maks (inklusif), Anda dapat menggunakan rumus berikut

Math.floor(Math.random() * (max - min + 1)) + min

Contoh. Nilai Bilangan Bulat Antara Dua Angka

// input from the user
const min = parseInt(prompt("Enter a min value: "));
const max = parseInt(prompt("Enter a max value: "));

// generating a random number
const a = Math.floor(Math.random() * (max - min + 1)) + min;

// display a random number
console.log(`Random value between ${min} and ${max} is ${a}`);
_

Keluaran

Enter a min value: 1
Enter a min value: 50
Random value between 1 and 50 is 47

Dalam JavaScript, Anda dapat menghasilkan angka acak dengan fungsi Math.random()

Math.random() mengembalikan angka floating-point acak mulai dari 0 hingga kurang dari 1 (termasuk 0 dan tidak termasuk 1)

Program di atas akan menampilkan keluaran bilangan bulat antara min (inklusif) hingga maks (inklusif)

Pertama, nilai minimum dan maksimum diambil sebagai masukan dari pengguna. Kemudian metode Math.random() digunakan untuk mendapatkan angka acak dari nilai yang diteruskan

Dalam JavaScript, kita dapat membuat angka acak menggunakan fungsi Math.random(). Sayangnya, fungsi ini hanya menghasilkan angka floating-point antara 0 dan 1

Dalam pengalaman saya, jauh lebih umum membutuhkan bilangan bulat acak dalam rentang tertentu. Misalnya, angka acak antara 10 dan 20

Pembantu kecil ini memungkinkan kita melakukan itu

Eksklusif inklusif

Fungsi acak ini mencakup batas bawah, tetapi mengecualikan batas atas. Misalnya, random(10, 12) akan memberikan 10 atau 11, tetapi tidak pernah 12

Ini dilakukan dengan sengaja, agar sesuai dengan perilaku Math.random, serta metode JavaScript seperti slice

Penggunaan

js

Penjelasan

Fungsi ini memetakan rentang 0..1_ yang dihasilkan oleh Math.random ke rentang yang Anda tentukan. Jika Anda belum pernah melihat latihan ini sebelumnya, ini bisa terlihat sangat liar

Katakanlah kita memilih angka acak antara 0 dan 4. Karena Math.random_ memberi kita nomor acak antara 0 dan 1, ini adalah masalah yang relatif mudah. kita dapat mengalikan hasilnya dengan 4, dan membulatkannya ke bawah untuk mendapatkan bilangan bulat

js

Bagaimana jika kita menginginkan minimum selain 0?

Triknya adalah kita perlu mendapatkan delta.

js

1 adalah

js

2, jadi kita akan mendapatkan nilai acak antara 0 dan 2. 99999. Kami kemudian dapat menaikkannya dengan nilai minimum kami, untuk menggesernya ke kisaran yang tepat

Javascript adalah bahasa pemrograman berfitur lengkap, mampu membuat perhitungan matematis yang rumit dengan cepat dan akurat. Standar Javascript mempermudah perhitungan ini dengan objek

let value2 = Math.random() * 2.5;
2

Salah satu cara paling umum pemrogram menggunakan objek

let value2 = Math.random() * 2.5;
2 adalah dengan membuat angka acak. Keacakan digunakan secara terprogram dalam seni, sains, dan game. Apakah Anda mensimulasikan sapuan kuas sable, menjalankan uji coba medis terkontrol, membangun kasino online, atau mengenkripsi apa pun, Anda memerlukan nomor acak

Membuat angka acak Javascript berbeda dari sekadar menetapkan angka ke variabel dalam program — beberapa tindakan menarik terjadi di balik layar

Apa itu Keacakan dalam Javascript?

Tidak mungkin dalam komputasi untuk menghasilkan angka yang benar-benar acak. Ini karena setiap perhitungan di dalam komputer memiliki dasar logika sebab akibat, sedangkan kejadian acak tidak mengikuti logika tersebut

Komputer tidak mampu menciptakan sesuatu yang benar-benar acak. Keacakan sejati hanya dimungkinkan melalui sumber data eksternal yang tidak dapat dibuat oleh komputer, seperti pergerakan banyak lampu lava sekaligus (yang telah digunakan sebagai enkripsi acak yang tidak dapat dipecahkan di dunia nyata), kebisingan meteografi, atau pembusukan nuklir.

Solusi yang digunakan Javascript, dan bahasa pemrograman lainnya untuk mengimplementasikan keacakan adalah pembuatan angka “pseudo-random”. Angka acak Javascript dimulai dari nilai internal tersembunyi yang disebut “seed. ” Benih adalah titik awal untuk urutan angka tersembunyi yang didistribusikan secara merata ke seluruh rentang yang memungkinkan

Pengembang tidak dapat mengubah seed pseudo-random Javascript atau distribusi nilai dalam urutan pseudo-acak yang dihasilkannya. Implementasi Javascript yang berbeda dan browser yang berbeda seringkali dimulai dengan seed yang berbeda. Jangan berasumsi bahwa browser yang berbeda, atau bahkan komputer yang berbeda, akan selalu menggunakan seed yang sama

Angka acak Javascript tidak aman untuk digunakan dalam kriptografi karena menguraikan seed dapat menyebabkan dekripsi urutan angka tersembunyi. Ada beberapa fungsi untuk membuat nomor pseudo-acak yang aman secara kriptografis di Javascript, tetapi tidak didukung oleh browser lama

Dalam posting blog ini, pertama-tama kita akan membahas metode kanonik untuk membuat angka acak Javascript. Kemudian kami akan beralih ke cara mendapatkan data acak berkualitas lebih tinggi;

Menghasilkan Angka Acak Javascript

Javascript membuat angka acak semu dengan fungsi

let value2 = Math.random() * 2.5;
4. Fungsi ini tidak memerlukan parameter dan membuat angka desimal acak antara 0 dan 1. Nilai yang dikembalikan mungkin 0, tetapi tidak akan pernah menjadi 1

let value1 = Math.random();

Anda dapat menggunakan

let value2 = Math.random() * 2.5;
4 untuk membuat bilangan bulat (bilangan bulat) atau angka dengan desimal (angka floating point). Karena
let value2 = Math.random() * 2.5;
_4 membuat angka floating point secara default, Anda dapat membuat angka floating point acak hanya dengan mengalikan nilai maksimum yang dapat diterima dengan hasil dari
let value2 = Math.random() * 2.5;
4. Oleh karena itu, untuk membuat nomor acak semu antara 0 dan 2. 5

let value2 = Math.random() * 2.5;

Membuat bilangan bulat acak semu sedikit lebih sulit; . Jadi, untuk membuat angka acak antara 0 dan 10

let value3 = Math.floor(Math.random() * 10);

Menghasilkan Angka Acak Javascript Lebih Mudah

let value2 = Math.random() * 2.5;
4 adalah fungsi yang berguna, tetapi dengan sendirinya tidak memberikan programmer cara mudah untuk menghasilkan nomor pseudo-random untuk kondisi tertentu. Mungkin ada kebutuhan untuk menghasilkan angka acak dalam rentang tertentu yang tidak dimulai dengan 0, misalnya

Untungnya, ada fungsi Javascript sederhana yang dapat dibuat pemrogram untuk membuat angka acak semu lebih mudah dikelola. Bagian selanjutnya akan menunjukkan kepada Anda cara membuat fungsi-fungsi tersebut, lalu menggabungkan semuanya menjadi satu generator bilangan acak semu

Bilangan Pseudo-Acak Integer Di Seluruh Rentang

Pada contoh sebelumnya,

let value2 = Math.random() * 2.5;
_4 tidak pernah dapat membuat angka di bagian paling atas dari rentang yang ditentukan. Jika Anda menginginkan angka antara 0 dan 5, misalnya, Anda bisa mendapatkan 0-4, tetapi tidak pernah 5. Solusi untuk masalah ini, jika Anda membuat bilangan bulat, adalah menambahkan 1 ke hasilnya

// Generate a number between 0 and 10, including 10
function generateRandomInteger(max) {
    return Math.floor(Math.random() * max) + 1;
}

let value4 = generateRandomInteger(10);

Karena angka floating point dalam Javascript keluar ke banyak tempat desimal, tidak ada solusi satu angka sederhana untuk memasukkan angka floating point maksimum yang mungkin dalam jangkauan Anda kecuali jika Anda ingin membuat asumsi yang goyah dan mengetik banyak angka nol. Sebagai gantinya, Anda dapat menggunakan beberapa matematika sederhana yang juga bekerja dengan bilangan bulat untuk mendapatkan angka acak semu di seluruh rentang Anda

// Generate a random number between 2 and 10, including both 2 and 10
function generateRandomIntegerInRange(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

let value5 = generateRandomIntegerInRange(2, 10);

Bilangan Pseudo-Acak Mengambang di Berbagai Rentang

Fungsi yang melakukan ini untuk angka floating point akan terlihat hampir identik, kecuali bahwa itu tidak akan menggunakan

let value2 = Math.random() * 2.5;
8

// Generate a random number between 2.5 and 10.75, including both 2.5 and 10.75
function generateRandomFloatInRange(min, max) {
    return (Math.random() * (max - min + 1)) + min;
}

let value6 = generateRandomFloatInRange(2.5, 10.75);

Angka floating point tetap sedikit rumit di sini karena

let value2 = Math.random() * 2.5;
4 secara default menghasilkan jumlah maksimum tempat desimal yang dimungkinkan oleh implementasi Javascript. Dalam sebagian besar keadaan, Anda mungkin ingin membatasi tempat desimal Anda pada 3 atau 4 alih-alih membaca 10 atau lebih yang biasanya dibuat oleh
let value2 = Math.random() * 2.5;
4

Bilangan Pseudo-Random Floating-Point Dengan Tempat Desimal Tertentu

Fungsi

let value3 = Math.floor(Math.random() * 10);
_4 memformat angka dengan jumlah tempat desimal yang Anda tentukan. Untuk memastikan bahwa Anda tidak membuat string secara tidak sengaja dalam beberapa implementasi Javascript, sebaiknya selalu rangkai
let value3 = Math.floor(Math.random() * 10);
4 dengan fungsi
let value3 = Math.floor(Math.random() * 10);
6

// Generate a random number between 2.5 and 10.75, including both 2.5 and 10.75, and specifying 2 decimal places
function generateRandomDecimalInRangeFormatted(min, max, places) {
    let value = (Math.random() * (max - min + 1)) + min;
    return Number.parseFloat(value).toFixed(places);
}

let value7 = generateRandomDecimalInRangeFormatted(2.5, 10.75, 2);

Menyatukan Semuanya

Menyatukan semua ini, generator nomor pseudo-random Javascript yang dapat membuat bilangan bulat atau angka floating point dengan sejumlah tempat desimal dapat terlihat seperti ini. (Perhatikan bahwa implementasi ini juga mencakup pemeriksaan kesalahan untuk parameter. )

function generateRandomNumbers(min, max, places) {
    // If both the minimum and maximum values are integers, return a random integer. Don't let the user specify any decimal places.
    if (Number.isInteger(min) && Number.isInteger(max)) {
        if (places !== undefined) {
            new Error("Cannot specify decimal places with integers.");
        }
        return Math.floor(Math.random() * (max - min + 1)) + min;
    }

    // Otherwise, return a random floating point number with specified decimal places.
    else {

        // Make sure the minimum value is a number.
        if (Number.isNaN(Number.parseFloat(min))) {
            new Error("Minimum value is not a number.");
        }

        // Make sure the maximum value is a number.
        if (Number.isNaN(Number.parseFloat(max))) {
            new Error("Maximum value is not a number.");
        }

        // Make sure the decimal places value is a non-negative number greater than 0.
        if (Number.isInteger(places) === false) {
            new Error("Number of decimal places is not a number.");
        }

        if (places <= 0) {
            new Error("Number of decimal places must be at least 1.");
        }

        // Generate the floating point number.
        let value = (Math.random() * (max - min + 1)) + min;
        return Number.parseFloat(value).toFixed(places);
    }
}

Generator Angka Pseudo-Acak Lainnya

Kripto. getRandomValues()

Nilai pseudo-random yang kuat secara kriptografis tersedia di semua browser web yang mendukung

let value3 = Math.floor(Math.random() * 10);
7. Implementasi bervariasi di seluruh agen pengguna, tetapi semuanya diharuskan menggunakan benih dengan entropi yang cukup. Untuk mengisi larik dengan hasil coba

let array = new Uint32Array(10);
window.crypto.getRandomValues(array);

Metode Kuadrat Tengah

Diciptakan oleh John von Neumann sekitar tahun 1946, Metode Kuadrat Tengah (MSM) menghasilkan urutan bilangan acak semu dengan mengekstraksi digit tengah dari bilangan kuadrat

let seed = 42;
function middleSquareMethod() {
    let result = (seed*seed).toString().padStart(4,"0").slice(1,3);

    // Pad with zeros as necessary, then extract the middle value.
    seed = parseInt(result);
    return parseInt(result); // return 2-digit pseudo-random number
}

Waspadalah terhadap nilai seed tertentu, seperti 25, yang memiliki siklus lebih pendek atau menyebabkan algoritme mengulang satu nilai tanpa batas

Generator Kongruensi Linier

Diciptakan sekitar tahun 1958 oleh Thomson & Rotenberg, algoritma Linear Congruential Generator (LGC) mungkin merupakan algoritma tertua yang diketahui. Ini cepat, dan ketika berhati-hati dengan nilai awal, cukup memadai

let value2 = Math.random() * 2.5;
0

Xorshift keluarga generator nomor pseudo-acak

Xorshift atau "shift-register generators" adalah keluarga generator nomor pseudorandom yang ditemukan oleh George Marsaglia pada tahun 2003. Di antara PRNG tercepat, mereka menggunakan operasi bitwise untuk menghasilkan urutan berkualitas tinggi

let value2 = Math.random() * 2.5;
1

Varian xorshift —  xorwow, xorshift+, xoshiro, xoroshiro, xoshiro256*, xoshiro256+ — masing-masing memberikan metode yang berbeda;

Bilangan Acak Sejati

Seperti disebutkan di atas, angka acak yang sebenarnya harus muncul untuk sumber di luar komputer tanpa perangkat keras yang didedikasikan untuk tujuan ini. Untuk kebutuhan yang membutuhkan nomor acak yang benar-benar acak secara kriptografis, gunakan salah satu dari sumber eksternal berikut melalui API publik mereka

  • acak. org sampel kebisingan atmosfer dan menyediakan beberapa sumber data. integer, sequence, set, gaussian, float, dan data acak mentah
  • Quantum RNG dari Australian National University (ANU) Quantum Optics Group memperoleh angka acak dengan mengukur fluktuasi kuantum ruang hampa. Selain itu, Anda dapat melihat dan mendengar urutan nomor acak
  • Layanan Generator Bit Acak Quantum Institut Ruđer Bošković memanen keacakan dari proses kuantum emisi fotonik dalam semikonduktor, tersedia melalui banyak perpustakaan untuk bahasa pemrograman dan metode lainnya
  • Layanan Pembuat Nomor Acak Fisik Universitas Teknologi Taiyuan menerbitkan nomor acak yang bersumber dari laser yang kacau

Kesimpulan

Angka acak Javascript lebih kompleks untuk dihasilkan daripada yang mungkin muncul pertama kali. Mereka adalah konsep Javascript dasar tetapi membutuhkan beberapa pengetahuan konseptual tambahan saat membuat untuk keadaan tertentu. Di sini kami telah membahas berbagai teknik untuk mendapatkan nomor acak semu dengan

let value3 = Math.floor(Math.random() * 10);
8

Daftar di Intro to Programming Nanodegree Program kami hari ini untuk mempelajari lebih lanjut tentang pembuatan angka acak Javascript dan konsep pemrograman lainnya

Bagaimana cara menghasilkan angka acak antara rentang dalam JavaScript?

fungsi acak() . Matematika. fungsi random() digunakan untuk mengembalikan angka pseudo-random titik-mengambang antara rentang [0,1), 0 (inklusif), dan 1 (eksklusif). Angka acak ini kemudian dapat diskalakan sesuai dengan rentang yang diinginkan.

Bagaimana Anda menghasilkan angka acak antara dua nilai?

Tautan langsung ke jawaban ini .
Contoh kedua untuk rand() mengatakan ini
“Secara umum, Anda dapat membangkitkan N bilangan acak dalam interval (a,b) dengan rumus r = a + (b-a). *ran(N,1). "
Dengan a=20 dan b=150, Anda mendapatkan apa yang Anda inginkan

Bagaimana Anda memilih nomor acak dari rentang?

Gunakan acak. fungsi randrange() untuk mendapatkan bilangan bulat acak dari rentang eksklusif yang diberikan dengan menentukan kenaikan . Misalnya acak. randrange(0, 10, 2) akan mengembalikan angka acak antara 0 dan 20 (seperti 0, 2, 4, 6, 8).

Bagaimana cara menghasilkan angka acak antara 1 dan 100 di Jawa?

Ini adalah kode terakhir yang lengkap. .
public static void main(String[] args) {
// buat instance dari kelas Acak
Acak AngkaAcak = Acak baru();
int showMe = RandomNum. nextInt(100);
Sistem. keluar. println("Bilangan acak antara 1 dan 100. " + tunjukkanSaya);