Я не хочу реплицировать код через перегруженные конструкторы, как показано ниже. Как его реорганизовать?
/// <summary>
/// Represents a pseudo-random number generator, a device that
/// produces a sequence of numbers that are normally distributed.
/// </summary>
public class NormalDeviate : UniformDeviate
{
double mean;
double standardDeviation;
double storedValue = 0d;
/// <summary>
/// Initializes a new instance of the <see cref="NormalDeviate"/> class.
/// </summary>
/// <param name="mean">The mean.</param>
/// <param name="standardDeviation">The standard deviation.</param>
/// <param name="seed">The seed.</param>
public NormalDeviate(double mean, double standardDeviation, ulong seed)
: base(seed)
{
this.mean = mean;
this.standardDeviation = standardDeviation;
}
/// <summary>
/// Initializes a new instance of the <see cref="NormalDeviate"/> class.
/// </summary>
/// <param name="mean">The mean.</param>
/// <param name="standardDeviation">The standard deviation.</param>
public NormalDeviate(double mean, double standardDeviation)
: base()
{
this.mean = mean;
this.standardDeviation = standardDeviation;
}
}
Учитывая, что вы не можете кормить базовый конструктор семенем 0
, когда семя не предусмотрено, это будет то, что вы хотите:
/// <summary>
/// Represents a pseudo-random number generator, a device that
/// produces a sequence of numbers that are normally distributed.
/// </summary>
public class NormalDeviate : UniformDeviate
{
double mean;
double standardDeviation;
double storedValue = 0d;
/// <summary>
/// Initializes a new instance of the <see cref="NormalDeviate"/> class.
/// </summary>
/// <param name="mean">The mean.</param>
/// <param name="standardDeviation">The standard deviation.</param>
/// <param name="seed">The seed.</param>
public NormalDeviate(double mean, double standardDeviation, ulong seed)
: base(seed)
{
CommonInitialization(mean, standardDeviation);
}
/// <summary>
/// Initializes a new instance of the <see cref="NormalDeviate"/> class.
/// </summary>
/// <param name="mean">The mean.</param>
/// <param name="standardDeviation">The standard deviation.</param>
public NormalDeviate(double mean, double standardDeviation)
: base()
{
CommonInitialization(mean, standardDeviation);
}
private void CommonInitialization(double mean, double standardDeviation)
{
this.mean = mean;
this.standardDeviation = standardDeviation;
}
}
public ClassName(double arg1, double arg2, double arg3) : base(arg3)
{
_member1 = arg1;
_member2 = arg2;
}
public ClassName(double arg1, double arg2) : this(arg1,arg2,0) { }
public ClassName(double arg1) : this(arg1,0,0) { }
Как насчет этого?
public class NormalDeviate : UniformDeviate
{
double mean;
double standardDeviation;
double storedValue;
/// <summary>
/// Initializes a new instance of the <see cref="NormalDeviate"/> class.
/// </summary>
/// <param name="mean">The mean.</param>
/// <param name="standardDeviation">The standard deviation. The distance from the mean where 78.2% of the samples lie.</param>
/// <param name="seed">The seed.</param>
public NormalDeviate(double mean, double standardDeviation, ulong seed) : base(seed)
{
this.mean = mean;
this.standardDeviation = standardDeviation;
this.storedValue = 0d;
}
/// <summary>
/// Initializes a new instance of the <see cref="NormalDeviate"/> class.
/// </summary>
/// <param name="mean">The mean.</param>
/// <param name="standardDeviation">The standard deviation. The distance from the mean where 78.2% of the samples lie.</param>
public NormalDeviate(double mean, double standardDeviation)
: this(mean, standardDeviation, 0)
{
}
}
EDIT: Фиксированный код