Get random sets of 5 from 50
private IEnumerable&lt;int&gt; NextFive(int int1, int int2)



The names int1 and int2 give absolutely no clue about what they are good for. I tried to ready the code but I cannot figure it out. Looking at if (i == int1 || i == int2) I guess it means exclude but who knows.




throw new IndexOutOfRangeException("int1 == int2");



This isn't IndexOutOfRangeException but rather ArgumentException. The argumetns have invalid values but they might be within the allowed range.




throw new IndexOutOfRangeException("int1 &gt; 51 || int2 &gt; 51");



I agree this is the right type of the exception but I preferred it checking each value separately to give the user a hint which one of the parameters is incorrect.




Random rand = new Random();
private int[] deckBase;
int nextFiveLastStart = 45;



Inconsistent access modifier usage. private implicit, private explicit, private implicit... Pick one ;-)




int j = 0;
for (int i = 0; i &lt; 52; i++)
{
    if (i == int1 || i == int2)
        continue;
    deckBase[j] = i;
    j++;
}



There's no need for the int j = 0; you can put it inside the for:

for (int i = 0, j = 0; i &lt; 52; i++)
{
    if (i == int1 || i == int2)
        continue;
    deckBase[j] = i;
    j++;
}