在C#中,可以通過繼承System.Random
類來實現自定義的隨機數生成器
using System;
public class CustomRandom : Random
{
// 構造函數
public CustomRandom() : base() { }
public CustomRandom(int seed) : base(seed) { }
// 自定義隨機數生成方法
public override int Next()
{
// 在這里實現你的自定義隨機數生成算法
// 例如,使用線性同余生成器(LCG)算法
int a = 1664525;
int c = 1013904223;
int m = int.MaxValue;
int seed = base.Next();
return (a * seed + c) % m;
}
public override int Next(int maxValue)
{
return Next(0, maxValue);
}
public override int Next(int minValue, int maxValue)
{
if (minValue > maxValue)
throw new ArgumentOutOfRangeException("minValue", "minValue must be less than or equal to maxValue.");
long range = (long)maxValue - minValue;
if (range <= int.MaxValue)
{
return minValue + Next((int)range);
}
else
{
return minValue + Next();
}
}
public override double NextDouble()
{
return Sample();
}
protected override double Sample()
{
// 在這里實現你的自定義隨機數生成算法
// 例如,使用Mersenne Twister算法
// ...
}
}
在上面的代碼中,我們創建了一個名為CustomRandom
的類,它繼承自System.Random
。然后,我們重寫了Next()
、Next(int maxValue)
、Next(int minValue, int maxValue)
和Sample()
方法,以實現自定義的隨機數生成算法。
要使用自定義隨機數生成器,只需創建一個CustomRandom
對象并調用其方法即可:
public static void Main(string[] args)
{
CustomRandom random = new CustomRandom();
// 生成一個介于0到100之間的隨機整數
int randomNumber = random.Next(100);
Console.WriteLine("Generated random number: " + randomNumber);
}
請注意,在實現自定義隨機數生成器時,確保生成的隨機數序列具有良好的統計特性,以便在各種應用程序中獲得高質量的隨機數。