C#

C#. Как сгенерировать случайное число в диапозоне, исключающее одно число. C#

Пример: нужно получить случайное число в диапозоне (0;10), но брать 5 нельзя. Как это реализовать?
Чтобы было равномерное распределение в диапазоне [0;10] за исключением пятёрки, можно сделать так вот, например (с массивом размера n и аккуратным выводом всех его элементов):
using System;
namespace New_Project
{ class Program
{ static void Main()
{ int l = 0, m, n; Console.Write("n: ");
n = Convert.ToInt32(Console.ReadLine());
int [] A = new int [n];
Random rnd = new Random();
for (m = 0; m < n; m++)
{ A[m] = rnd.Next(0, 10); if (A[m] >= 5)
A[m]++; Console.Write(String.Format
("{0,3:d}", A[m])); l++; if (l == 16)
{ l = 0; Console.WriteLine(); } } } } }
Николай Маслов
Николай Маслов
66 572
Лучший ответ
Бери числа от 1 до 9. И если == 5, то заменить на 10
Nijat Babayev
Nijat Babayev
62 976
1. Кидать до тех пор, пока не будет что-то другое, кроме 5.
2. Если нужно целое, то кинуть от 1 до 8 (если края диапазона т. е. 0 и 10 не включаются), при этом если выпало 5 и более - прибавить 1.
Sibel Aziz
Sibel Aziz
30 155
Сергей Данилов Я думал о такой логике, просто интерено, есть ли уже готовый и реализованный метод для этого
again:
Random random = new Random();

int a = random.Next(1,10);

if (a == 5)
{
goto again;
}

Console.WriteLine(a);

проблем то)
Сергей Данилов Прикинь, если твой рандомайзер выдаст 5, 5, 5, 5 и тд. 1млн раз
using System;
namespace restless
{
class Program
{
static void Main(string[] args)
{
int[] arr = { 1, 2, 3, 4, 6, 7, 8, 9, 10 };
Console.WriteLine(arr[new Random().Next(0, arr.Length)]);
}
}
}