Вы должны повторно использовать ваши случайные объекты, но я полагаю, что причина, по которой монеты имеют тенденцию появляться в верхней части, заключается в следующей строке кода:
int y = random.Next(-1,random.Next(1,game.Window.ClientBounds.Height));
Сначала вы генерируете случайное число от 1 довысота вашего клиента, а затем использовать его в качестве границы для генерации другого случайного числа от -1 до первого сгенерированного значения.Поскольку второе значение всегда будет меньше или равно первому сгенерированному значению, более низкие значения более вероятны, чем более высокие (и на самом деле ваша картина показывает примерно то распределение, которое можно ожидать).Для равномерного распределения вам необходимо:
int y = random.Next(-1,game.Window.ClientBounds.Height);