Bagaimana cara menghasilkan angka acak dalam rentang?
267
Anda dapat mencoba
Random r = new Random();
int rInt = r.Next(0, 100); //for ints
int range = 100;
double rDouble = r.NextDouble()* range; //for doubles
Lihatlah
Kelas Acak , Metode Random.Next (Int32, Int32) dan Metode Random.NextDouble
double rDouble = (r.NextDouble()*2)-1.0;
Random()
menggunakan seed yang bergantung pada waktu, tetapi menuliskannya secara eksplisit lebih baik untuk dibaca.Coba kode di bawah ini.
sumber
Sesuatu seperti:
sumber
DateTime.Now.Millisecond
?Random
sudah diunggulkan dengan nilai sistem, danMillisecond
hanya angka antara 0 dan 999. Jika pasangan garis ini selalu bersama dalam kode, hanya akan ada 1000 nilai yang mungkinrnd.Next
karena benih diatur ulang setiap kali. Benih yang sama, nomor acak yang sama keluar. Saya akan meninggalkan benih manual.Environment.TickCount
.Menggunakan:
sumber
Untuk pembaca masa depan jika Anda ingin nomor acak dalam rentang gunakan kode berikut:
C # Random ganda antara min dan maks
Contoh kode
sumber
return new Random().NextDouble() * (maxNumber - minNumber) + minNumber;
Selain dari Kelas Acak , yang menghasilkan bilangan bulat dan ganda, pertimbangkan:
Stack Overflow question Generasi (pseudo) nilai terbatas acak (U) Int64 dan Desimal
C # Kelas RandomProvider
sumber
Ini adalah versi terbaru dari jawaban Darrelk . Ini diimplementasikan menggunakan metode ekstensi C # . Itu tidak mengalokasikan memori ( Random baru () ) setiap kali metode ini dipanggil.
Penggunaan (pastikan untuk mengimpor namespace yang berisi kelas RandomExtensionMethods):
sumber