Jawaban:
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
Random()
menggunakan seed yang bergantung pada waktu, tetapi menuliskannya secara eksplisit lebih baik untuk dibaca.
Coba kode di bawah ini.
Random rnd = new Random();
int month = rnd.Next(1, 13); // creates a number between 1 and 12
int dice = rnd.Next(1, 7); // creates a number between 1 and 6
int card = rnd.Next(52); // creates a number between 0 and 51
Sesuatu seperti:
var rnd = new Random(DateTime.Now.Millisecond);
int ticks = rnd.Next(0, 3000);
DateTime.Now.Millisecond
?
Random
sudah diunggulkan dengan nilai sistem, dan Millisecond
hanya angka antara 0 dan 999. Jika pasangan garis ini selalu bersama dalam kode, hanya akan ada 1000 nilai yang mungkin rnd.Next
karena benih diatur ulang setiap kali. Benih yang sama, nomor acak yang sama keluar. Saya akan meninggalkan benih manual.
Environment.TickCount
.
Menggunakan:
Random r = new Random();
int x= r.Next(10);//Max range
Untuk pembaca masa depan jika Anda ingin nomor acak dalam rentang gunakan kode berikut:
public double GetRandomNumberInRange(double minNumber, double maxNumber)
{
return new Random().NextDouble() * (maxNumber - minNumber) + minNumber;
}
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
Ini adalah versi terbaru dari jawaban Darrelk . Ini diimplementasikan menggunakan metode ekstensi C # . Itu tidak mengalokasikan memori ( Random baru () ) setiap kali metode ini dipanggil.
public static class RandomExtensionMethods
{
public static double NextDoubleRange(this System.Random random, double minNumber, double maxNumber)
{
return random.NextDouble() * (maxNumber - minNumber) + minNumber;
}
}
Penggunaan (pastikan untuk mengimpor namespace yang berisi kelas RandomExtensionMethods):
var random = new System.Random();
double rx = random.NextDoubleRange(0.0, 1.0);
double ry = random.NextDoubleRange(0.0f, 1.0f);
double vx = random.NextDoubleRange(-0.005f, 0.005f);
double vy = random.NextDoubleRange(-0.005f, 0.005f);
double rDouble = (r.NextDouble()*2)-1.0;