Anda lebih baik membaca /dev/urandombersama Filekelas jika Anda menginginkan nomor acak yang kuat secara kriptografis.
Menara
Bagaimana dengan bilangan acak negatif (ganda)? Saya mencoba menerapkan metode randomRange yang akan menghasilkan misalnya dari -0,8 hingga 0,9 ... hasilnya akan menjadi misalnya -0,32
just_a_dude
2
@just_a_dude kedengarannya seperti pertanyaan yang sempurna untuk stackoverflow. Pertimbangkan untuk membuat pertanyaan baru :)
Seth Ladd
1
Metode yang akan menghasilkan misalnya dari -0,8 hingga 0,9 sederhana. Anda hanya perlu memetakan nilai. Rentang Anda 0,8 + 0,9 = 1,7. Jadi jika Anda memasukkan rng.nextInt (1700) Anda akan mendapatkan angka antara 0 dan 1700. Bagi dengan 100 dan kurangi -0,8. Artinya yourRnd = rng.nextInt (1700) /100.0-0.8. Ada lebih banyak opsi yang dapat Anda gunakan seperti tidak menggunakan nextInt melainkan menggandakan 0-1, ditambah 1,7 dan digeser -0,8
Veljac
28
Anda dapat mencapainya melalui Randomobjek kelas random.nextInt(max), yang ada di dart:mathperpustakaan. The nextInt()Metode membutuhkan batas max. Nomor acak dimulai dari 0dan batas maksimal itu sendiri bersifat eksklusif.
import'dart:math';Random random =newRandom();int randomNumber = random.nextInt(100);// from 0 upto 99 included
Jika Anda ingin menambahkan batas min, tambahkan batas min ke hasil
int randomNumber = random.nextInt(90)+10;// from 10 upto 99 included
bukankah jawaban Anda menyertakan angka dari 10 hingga 109 disertakan?
Tim
@Tim terima kasih karena memperhatikan, saya baru saja menyalin kode dari baris sebelumnya. Selesaikan itu.
Samir Rahimy
17
Jika Anda memerlukan nomor acak yang aman secara kriptografik (mis. Untuk enkripsi), dan Anda berada di browser, Anda dapat menggunakan DOM cryptography API :
int random(){final ary =newInt32Array(1);
window.crypto.getRandomValues(ary);return ary[0];}
Ini berfungsi di Dartium, Chrome, dan Firefox, tetapi kemungkinan tidak di browser lain karena ini adalah API eksperimental.
API acak yang aman baru saja ditambahkan ke dart:math
newRandom.secure()
dart:mathRandommenambahkan securekonstruktor yang mengembalikan generator acak yang aman secara kriptografik yang membaca dari sumber entropi yang disediakan oleh embedder untuk setiap nilai acak yang dihasilkan.
yang didelegasikan ke window.crypto.getRandomValues()dalam browser dan ke OS (seperti urandomdi server)
API baru ini tersedia dalam versi 1.14-dev atau lebih tinggi.
Seth Ladd
7
Tidak dapat berkomentar karena saya baru saja membuat akun ini, tetapi saya ingin memastikan bahwa solusi @ eggrobot78 berfungsi, tetapi bersifat eksklusif dalam dart sehingga tidak menyertakan nomor terakhir. Jika Anda mengubah baris terakhir menjadi "r = min + rnd.nextInt (max - min + 1);", maka itu harus menyertakan angka terakhir juga.
Penjelasan:
max =5;
min =3;Random rnd =newRandom();
r = min + rnd.nextInt(max - min);//max - min is 2//nextInt is exclusive so nextInt will return 0 through 1//3 is added so the line will give a number between 3 and 4//if you add the "+ 1" then it will return a number between 3 and 5
Solusi alternatif dapat menggunakan kode DRandom berikut . Kelas ini harus digunakan dengan benih. Ini menyediakan antarmuka yang akrab dengan apa yang Anda harapkan di .NET, itu porting dari Random.cs mono. Kode ini mungkin tidak aman kriptografi dan belum diuji secara statistik.
Saya telah menggunakan DRandom sebelumnya. Lib bagus!
John Evans
3
Baru saja menulis kelas kecil ini untuk menghasilkan angka Acak Normal ... itu adalah titik awal yang layak untuk pemeriksaan yang perlu saya lakukan. (Set ini akan didistribusikan pada kurva berbentuk "lonceng".) Benih akan ditetapkan secara acak, tetapi jika Anda ingin dapat menghasilkan kembali satu set, Anda cukup melewatkan beberapa benih tertentu dan set yang sama akan dihasilkan.
Kemudian Anda bisa menggunakannya seperti ini untuk memeriksa mean set 1000 nums yang dihasilkan antara batas rendah dan tinggi. Nilai disimpan di kelas sehingga bisa diakses setelah pembuatan instance.
Izinkan saya menjawab pertanyaan ini dengan contoh praktis dalam bentuk aplikasi pengguliran dadu sederhana yang memanggil 1 dari 6 gambar wajah dadu secara acak ke layar saat diketuk.
pertama-tama deklarasikan variabel yang menghasilkan angka acak (jangan lupa untuk mengimpor dart.math). Kemudian nyatakan variabel yang mengurai bilangan acak awal dalam batasan antara 1 dan 6 sebagai Integer.
Kedua variabel bersifat statis privat agar dapat diinisialisasi sekali. Ini bukan masalah besar tetapi akan menjadi praktik yang baik jika Anda harus menginisialisasi sejumlah besar angka acak.
Jawaban:
Gunakan
Random
kelas daridart:math
:Kode ini telah diuji dengan VM Dart dan dart2js, pada saat penulisan ini.
sumber
/dev/urandom
bersamaFile
kelas jika Anda menginginkan nomor acak yang kuat secara kriptografis.Anda dapat mencapainya melalui
Random
objek kelasrandom.nextInt(max)
, yang ada didart:math
perpustakaan. ThenextInt()
Metode membutuhkan batas max. Nomor acak dimulai dari0
dan batas maksimal itu sendiri bersifat eksklusif.Jika Anda ingin menambahkan batas min, tambahkan batas min ke hasil
sumber
Jika Anda memerlukan nomor acak yang aman secara kriptografik (mis. Untuk enkripsi), dan Anda berada di browser, Anda dapat menggunakan DOM cryptography API :
Ini berfungsi di Dartium, Chrome, dan Firefox, tetapi kemungkinan tidak di browser lain karena ini adalah API eksperimental.
sumber
Berikut potongan untuk membuat daftar nomor acak
Ini akan menghasilkan daftar 12 bilangan bulat dari 0 hingga 99 (inklusif).
sumber
API acak yang aman baru saja ditambahkan ke
dart:math
yang didelegasikan ke
window.crypto.getRandomValues()
dalam browser dan ke OS (sepertiurandom
di server)sumber
Tidak dapat berkomentar karena saya baru saja membuat akun ini, tetapi saya ingin memastikan bahwa solusi @ eggrobot78 berfungsi, tetapi bersifat eksklusif dalam dart sehingga tidak menyertakan nomor terakhir. Jika Anda mengubah baris terakhir menjadi "r = min + rnd.nextInt (max - min + 1);", maka itu harus menyertakan angka terakhir juga.
Penjelasan:
sumber
coba ini, Anda dapat mengontrol nilai min / max:
sumber
Solusi alternatif dapat menggunakan kode DRandom berikut . Kelas ini harus digunakan dengan benih. Ini menyediakan antarmuka yang akrab dengan apa yang Anda harapkan di .NET, itu porting dari Random.cs mono. Kode ini mungkin tidak aman kriptografi dan belum diuji secara statistik.
sumber
Baru saja menulis kelas kecil ini untuk menghasilkan angka Acak Normal ... itu adalah titik awal yang layak untuk pemeriksaan yang perlu saya lakukan. (Set ini akan didistribusikan pada kurva berbentuk "lonceng".) Benih akan ditetapkan secara acak, tetapi jika Anda ingin dapat menghasilkan kembali satu set, Anda cukup melewatkan beberapa benih tertentu dan set yang sama akan dihasilkan.
Selamat bersenang-senang...
Kemudian Anda bisa menggunakannya seperti ini untuk memeriksa mean set 1000 nums yang dihasilkan antara batas rendah dan tinggi. Nilai disimpan di kelas sehingga bisa diakses setelah pembuatan instance.
_swarmii
sumber
gunakan perpustakaan ini http://dart.googlecode.com/svn/branches/bleeding_edge/dart/lib/math/random.dart menyediakan generator acak yang bagus yang menurut saya akan dimasukkan ke dalam SDK segera semoga membantu
sumber
Bagi saya cara termudah adalah melakukannya:
Terima kasih untuk penjelasan @ adam-singers di sini.
sumber
itu berhasil untuk saya
new Random().nextInt(100); // MAX = number
itu akan memberikan 0 hingga 99 nomor acak
Contoh ::
sumber
Izinkan saya menjawab pertanyaan ini dengan contoh praktis dalam bentuk aplikasi pengguliran dadu sederhana yang memanggil 1 dari 6 gambar wajah dadu secara acak ke layar saat diketuk.
pertama-tama deklarasikan variabel yang menghasilkan angka acak (jangan lupa untuk mengimpor dart.math). Kemudian nyatakan variabel yang mengurai bilangan acak awal dalam batasan antara 1 dan 6 sebagai Integer.
Kedua variabel bersifat statis privat agar dapat diinisialisasi sekali. Ini bukan masalah besar tetapi akan menjadi praktik yang baik jika Anda harus menginisialisasi sejumlah besar angka acak.
Sekarang buat widget Deteksi gerakan dengan ClipRRect sebagai anak untuk mengembalikan salah satu dari enam gambar wajah dadu ke layar saat diketuk.
Nomor acak baru dibuat setiap kali Anda mengetuk layar dan nomor itu direferensikan untuk memilih gambar wajah dadu mana yang dipilih.
Saya harap contoh ini membantu :)
Aplikasi bergulir dadu menggunakan nomor acak dalam panah
sumber