#c_sharp #случайные_числа
Подскажите, имеется ли какой-нибудь простой метод выбора из двух фраз. Например, реализующий такое Random r = new Random(); string stroka ="стакан"; switch(r.Next(2)) { case 0: stroka += " холодный"; break; case 1: stroka += " теплый"; break; } Этот код слишком грамоздкий, есть ли какое либо сокращение? Например: функция(стакан {теплый|холодный});
Ответы
Ответ 1
Можно крутить как угодно, первое что пришло в голову string stroka ="стакан"; string[] arr = {"теплый","холодный"}; Console.WriteLine(stroka+" "+arr[new Random().Next(0, arr.Length-1)]); Если нужно именно функцией, то можно так: public string ArrayRand(String stroka, String[] arr) { return stroka += " "+arr[new Random().Next(0, arr.Length-1)]; }Ответ 2
Вот однострочник: var stroka = new Random().Next(2) == 0 ? "стакан холодный" : "стакан теплый";Ответ 3
Вот вы пишите (в комментарии под первым ответом): да, но это тоже не удобно, грамоздко... представте если это не два слова, а целый абзац, где десятки слов которые должны подставиться случайно. в общем по сути это генеротор уникальных текстов получается В таком случае могу предложить такое вот решение, додумать до конца должны сами, ведь слова в абзаце могут разделять и точки, и запятые, и прочие знаки препинания. Вот идея: ... // наш абзац со словами =) string strings = "hot cold red blue white old new green light"; // и вот мы их разбиваем на словечки, далее - стандартная схема! string[] words = strings.Split(' '); string mainword = "cap is "; Random rand = new Random(); int num = rand.Next(0, words.Length); mainword += words[num]; MessageBox.Show(mainword); ...Ответ 4
Можно еще так, добавить extension для массива. К примеру : string stroka ="стакан"; string[] arr = {"теплый","холодный"}; Console.WriteLine(arr.Rnd()); и Класс расширений для массива public static class ArrayExtensions { public static string Random(this string[] arr) { return arr[new Random().Next(0, arr.Length - 1)]; } } То же самое, что предлагал johniek_comp, только удобней в использовании, имхо.
Комментариев нет:
Отправить комментарий