カードを重複しないで配るために、生成した乱数をリストに追加していき、もしすでにリストにあったらもう一度乱数を生成するというスクリプトを書きたいのですが

cardRandom = Random.Range(0,49);
cardDeck.Add(cardRandom);

if(cardDeck.Contains(cardRandom))
{
Debug.log("被りを検知");
}

こんな感じで書こうとすると、当たり前ですが最初に追加した乱数が見つかるので必ずifが実行されてしまいます

最初にifをもってくれば良いのかな?とも思うのですがまだcardRandom変数はありませんしifを抜けたあとにもう一度乱数生成に入ってしまうのでうまい書き方が見つかりません

カードのプレファブが持っているStartで処理したいのですがどうにかなりませんか?
プレファブを5個生成すると全部違うカードになるイメージです