Как я могу создать случайное число, которое является одним из установленных [0,5,10,15]?

Я использовал следующее:

Random r = new Random(); 
var a = r.Next(9)

Чтобы создать случайное число между 0-9.

Однако теперь мне нужно случайным образом генерировать одно из следующих чисел: 0,5,10,15

Есть ли способ, которым я мог бы изменить это, чтобы выбрать числа выше?

0

7 ответы

Random r = new Random(); 
var a = r.Next(4) * 5;

Будет делать трюк. Обратите внимание, что аргумент является верхней границей exclusive , поэтому он никогда не будет сгенерирован. Образец кода генерирует от 0 до 8.

Если вам нужен другой набор чисел, вы можете сделать следующее:

int[] possible = new int[] { 0, 5, 10, 15 };
Random r = new Random(); 
int a = possible[r.Next(possible.length)];
6
добавлено
Сдвиг может быть от кого-то, кто надеется увеличить экспозицию по собственному ответу
добавлено автор dreamlax, источник
Это звучит как работа Ричарда Помпоуса III.
добавлено автор Jim Balter, источник
Это было бы моим догадкой, учитывая их численность. К сожалению, кто-то это сделает.
добавлено автор Mike Precup, источник
Аааанд, я тоже замешан. Объяснение? Три должности здесь были опущены без объяснения причин.
добавлено автор Mike Precup, источник
Random rnd = new Random();

//create a pre-defined list
int[] nums = new int[] {0, 5, 10, 15};

int rndNum = nums[rnd.Next(nums.Length)];

Вы даже можете повторить цикл, чтобы генерировать более одного случайного числа из набора заданных чисел в массиве.

4
добавлено
@downvoter - объяснение?
добавлено автор PaRiMaL RaJ, источник
@MikePrecup - корректный синтаксис!
добавлено автор PaRiMaL RaJ, источник
Я не являюсь нисходящим, но из-за синтаксических ошибок раньше это случалось. У вас там несколько, так что это возможно. EDIT: TGH тоже попал, так что, думаю, нет. Это странная статья. EDIT2: И меня тоже. Что это за безумие?
добавлено автор Mike Precup, источник
Обратите внимание, что аргумент Next является верхней границей exclusive .
добавлено автор Mike Precup, источник

Создайте случайное число от 0 до 3, а затем просто используйте это как индекс в массив:

Что-то вроде этого (псевдокод):

var nums = [0, 5, 10, 15];
return nums[new Random().Next(4)];

Или если это действительно так же просто, как кратные 5; просто умножьте его:

return new Random().Next(4) * 5;
1
добавлено
Далее (3) будет только 0, 1 или 2
добавлено автор Jim Balter, источник

Да. Поместите четыре числа в массив из четырех элементов. Затем генерируйте случайные числа между 0-3 и используйте их для индексации массива

1
добавлено
@TGH - я не знаю ни одного из u!
добавлено автор PaRiMaL RaJ, источник
Это по сути то же самое, что и решение @ AppDeveloper. Только код отсутствует.
добавлено автор dotNET, источник
почему голос?
добавлено автор TGH, источник
const int iterator = 5;
const int upperBound = 15;

var possibleValues = (from n in Enumerable.Range(0, upperBound + 1)
                      where n % iterator == 0
                      select n).ToArray(); 

Random r = new Random();
var a = possibleValues[r.Next(possibleValues.Length)];
0
добавлено
Есть ли решение LINQ, которое не включает в себя шаг%?
добавлено автор syclee, источник
Найдено решение linq. DId не знает о Range, приятно
добавлено автор syclee, источник
Каким будет решение linq?
добавлено автор syclee, источник
да, ты так прав. Что я думал о хаха
добавлено автор syclee, источник
Добавить запятую между 10 и 15.
добавлено автор dotNET, источник
if (i% iterator == 0) - было бы лучше (быстрее) увеличивать i на iterator . Или, для элегантности, вы могли бы сделать это в одной строке с Linq.
добавлено автор Jim Balter, источник
Слишком дорого..
добавлено автор AgentFire, источник
public static IEnumerable Range(int count, int start = 0, int step = 1)
{
    for (int i = start; i < count; i++)
        yield return i;
}

var arr = Range(4, 0, 5).ToArray();//0, 5, 10, 15.
0
добавлено
  Random r = new Random();
  var a = r.Next(4)*5;
0
добавлено
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot