Langkau ke kandungan utama

Penjana Nombor Rawak percuma

Jana nombor rawak dalam mana-mana julat, cipta senarai nombor unik, atau guling dadu. Menggunakan kerawakan yang selamat secara kriptografi.

Berfungsi luar talian selepas dimuatkan

πŸ”’ Setiap nombor menggunakan kerawakan selamat secara kriptografi pelayar anda (crypto.getRandomValues) β€” benar-benar adil, bukan Math.random() yang boleh diramal. Tiada apa yang dihantar. Walaupun begitu, jangan gunakan nombor ini untuk penjanaan kunci kriptografi, token keselamatan, atau aplikasi loteri/perjudian yang dikawal selia.

Perlu memilih pemenang mengikut nama daripada senarai, atau melambung duit syiling? Gunakan alat Lambung Syiling, Roda Putar dan Pemilih Senarai β†’

Kegunaan biasa

  • Jana Nombor LoteriPilih nombor loteri rawak untuk Powerball, Mega Millions, EuroMillions dan cabutan lain.
  • Pilih Pemenang Rawak untuk PemberianPilih secara adil pemenang rawak daripada senarai kemasukan bernombor untuk pertandingan dan pemberian.
  • Gulir Dadu untuk Permainan PapanGulir sebarang kombinasi dadu β€” d4, d6, d8, d10, d12, d20, d100 β€” untuk D&D dan RPG permainan papan.
  • Persampelan Rawak untuk PenyelidikanJana sampel rawak, tetapkan ID rawak atau pilih subset rawak daripada set data bernombor.
  • Jana Nombor Rawak Data UjianBuat senarai besar nombor rawak untuk ujian algoritma, mengisi pangkalan data dan ujian tekanan sistem.

Cara ia berfungsi

Setiap nombor yang dijana alat ini datang daripada crypto.getRandomValues β€” sumber rawak selamat-kriptografi pelayar, sama digunakan untuk penjanaan kunci TLS. Algoritma persampelan-penolakan tulisan tangan duduk di atasnya untuk menghapuskan berat sebelah modulo yang mengganggu pelaksanaan Math.random() % range ringkas, termasuk julat lebih lebar daripada 2^32 melalui aritmetik BigInt.

  1. 1
    Tetapkan julat dan mod anda
    Pilih antara satu nombor, senarai kelompok (sehingga 1000), atau dadu poliheral (d4 hingga d100). Untuk senarai anda juga boleh memerlukan nilai unik dan secara pilihan mengisih output menaik.
  2. 2
    crypto.getRandomValues menarik entropi mentah
    Setiap nombor ditarik daripada Uint32Array (atau BigUint64Array untuk julat lebih lebar daripada 2^32) diisi oleh RNG kriptografi pelayar β€” bukan Math.random(). Persampelan penolakan kemudian membuang nilai yang akan memiringkan taburan, jadi setiap integer dalam julat anda mempunyai kebarangkalian tepat sama.
  3. 3
    Mod nilai-unik menggunakan Fisher-Yates atau penjejakan penolakan
    Apabila mod unik dihidupkan dan julat muat dalam memori (sehingga 100,000 nilai), alat ini mewujudkan kolam penuh dan mengocoknya dengan Fisher-Yates. Untuk julat sangat besar ia sebaliknya menarik nilai satu demi satu, melangkau ulangan β€” mengelak kos memori membina tatasusunan berbilion-entri.
  4. 4
    Hasil mendarat dengan maklum balas dianimasikan dan kekal dalam sejarah sesi
    Nilai akhir dianimasikan ke tempatnya (gulungan gaya mesin-slot untuk nombor, dadu bergolek untuk mod dadu) menggunakan requestAnimationFrame, kemudian muncul dalam log sejarah boleh-tatal yang anda boleh salin pada bila-bila masa. Tiada apa keluar dari pelayar anda.

Alat berkaitan

Soalan lazim