Как сделать чтобы при генерации Random.Range(2, 15) сделать чтобы числа 5 и 11 не могли сгенерироваться то есть только числа
2 3 4 6 7 8 9 10 12 13 14 15 могли сгенриться!
Универсальный код для шарпа:
var _rand = new System.Random();//вообще эту штуку лучше вывести ЗА метод и не плодить инстансы этого класса внутри методов
private int RandomFromRangeWithExceptions(int rangeMin, int rangeMax, params int[] exclude)//exclude -- список чисел которые НЕ должны входить в результат
{
var range = Enumerable.Range(rangeMin, rangeMax).Where(i => !exclude.Contains(i));//создаем колекцию допустимых значений
int index = _rand.Next(rangeMin, rangeMax - exclude.Count);//генерируем индекс ячейки
return range.ElementAt(index);//возвращаем значение ячейки
}
Код оптимизированный под юнити:
private int RandomFromRangeWithExceptions(int rangeMin, int rangeMax, params int[] exclude)//exclude -- список чисел которые НЕ должны входить в результат
{
var range = Enumerable.Range(rangeMin, rangeMax).Where(i => !exclude.Contains(i));//создаем колекцию допустимых значений
int index = Random.Range(rangeMin, rangeMax - exclude.Count);//генерируем индекс ячейки
return range.ElementAt(index);//возвращаем значение ячейки
}
пример вызова:
RandomFromRangeWithExceptions(2, 15, 5, 11);
или
RandomFromRangeWithExceptions(1, 100, 5, 11, 14, 2, 99, 48);
Код базируется на этом ответе: https://stackoverflow.com/a/18485399/4423545
Код изменялся и не проверялся на наличие ошибок, но все должно пахать.
PS: Для удобства использования можно замутить этот метод как расширение к классу Random в случае Юнити.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости