2017-02-11 6 views
-3

Я знаю, как выбирать случайные числа между двумя числами. Однако я не знаю, как заставить его выбирать случайное число, которое я ему рассказываю.Генератор случайных чисел, выбирающий только заданные несколько чисел в C#

Это то, что я пытаюсь сделать. У меня 5 целых чисел.

int Hamburger = 5; 
int Sandwich = 7; 
int ChickenSalad = 10; 
int Pizza = 15; 
int Sushi = 20; 

5,7,10,15,20 являются цены каждой еды, и я хочу сделать так, чтобы он выбрал бы случайное число из этих выбранных номеров. 5,7,10,15,20.

Я новичок в C#, поэтому я об этом мало знаю. Я нашел этот

randomNoCorss = arr[r.Next(arr.Length)]; 

в другой должности, но я не понимаю и не знаю, как я могу поставить его в свой код.

+0

Я понимаю, что вы новичок в C#. Однако вы не можете быть новичком на www.google.com. Если вы потратили один мин на Google, чтобы искать то, что ищете, вы можете найти все легко. Не беспокойся. В следующий раз попробуйте сделать некоторое обходное решение, прежде чем отправлять вопрос. ** [http://stackoverflow.com/questions/2019417/access-random-item-in-list] (http://stackoverflow.com/questions/2019417/access-random-item-in-list) ** .. Поэтому я голосую за закрытие этого вопроса, так как это дубликат. –

+1

Возможный дубликат [Доступ к случайному элементу в списке] (http://stackoverflow.com/questions/2019417/access-random-item-in-list) –

+0

@SivaCharan Это не дубликат, как таковой. OP не спрашивает, как случайным образом получить значение из массива. Он спрашивает, как получить случайное значение из числа заданных значений, и не знает, что самый простой способ сделать это - построить массив из них. – Abion47

ответ

2

Вы должны создать массив из ваших возможных значений, а затем случайным образом индекс для этого массива:

int Hamburger = 5; 
int Sandwich = 7; 
int ChickenSalad = 10; 
int Pizza = 15; 
int Sushi = 20; 

Random r = new Random(); 
var values = new[] { Hamburger, Sandwich, ChickenSalad, Pizza, Sushi }; 
int result = values[r.Next(values.Length)]; 

Что это делает он принимает все ваши данные и помещает их в массив. Затем он генерирует случайное целое число от 0 и 4 и использует это целое число для получения значения из массива с использованием сгенерированного целого в качестве индекса массива.

+0

Большое спасибо – Jason

1

Полный код:

Random r = new Random(); 
int[] priceArray = new int[] { 5, 7, 10, 15, 20 }; 
int randomIndex = r.Next(priceArray.Length); 
int randomPrice = priceArray[randomIndex]; 
0

Вы должны добавить свои значения в массиве, а затем вы можете выбрать случайное число из этого массива

int[] myNumbers = new int[] { 5, 7, 10, 15, 20 }; 
    var random = new Random(); 
    var numberResult = myNumbers[random.Next(5)]; 
-1

Вы можете сделать это в LINQ:

int[] intArray = new int[] { 5, 7, 10, 15, 20 }; 

int result = intArray.OrderBy(n => Guid.NewGuid()).Select(x => x).Take(1) 
      .SingleOrDefault(); 

Результат будет случайным основанный на объявленном массиве целых чисел в переменной intArray.

Или вы можете сделать это, получая случайный индекс вашего массива:

int[] intArray = new int[] {5, 7, 10, 15, 20 }; 
Random rndom = new Random(); 
int index = rndom.Next(0, intArray.Length - 1); //Since int array always starts at 0. 
int intResult = intArray[index]; 

Позвольте мне знать, если вам нужно больше разъяснений.

+0

Никогда не используйте GUID как функцию случайности. GUID гарантированно будет уникальным, а не случайным. Вместо этого используйте 'Random.Next'. – Abion47

+0

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