Cast' int'到'随机'

时间:2014-10-11 13:44:21

标签: c# random casting

我有一个函数foo(Random r),其输入中有一个Random。

有时随机是由用户给出的,然后不是Random类型,我不知道如何将intbyte[]等其他类型的值分配给Random 。 我的意思是有时我需要像foo(int r)那样调用这个函数。 顺便说一下,我只是从一个dll调用这个函数而没有源代码。

如何将int作为Random传递?

1 个答案:

答案 0 :(得分:1)

这个怎么样?
这只返回你设置的整数。

class NotRandom : Random
{
    public int Integer{get;set;}

    public NotRandom(int integer)
    {
        Integer = integer;
    }

    public override int Next()
    {
        return Integer;
    }

    public override int Next(int maxValue)
    {
        return Integer;
    }

    public override void NextBytes(byte[] buffer)
    {
        for (int i = 0; i < buffer.Length; i++)
            buffer[i] = (byte)Integer;
    }

    protected override double Sample()
    {
        return (double)Integer;
    }

    public override int Next(int minValue, int maxValue)
    {
        return Integer;
    }

    public override double NextDouble()
    {
        return (double)Integer;
    }
}

在样品功能

private int GetRandomNumber(Random rand)
{
   return rand.Next();
}

然后,如果您按以下方式致电

int randNum = GetRandomNumber(new NotRandom(3));

randNum总是有3个你将NotRandom的构造函数作为参数传递。