Выбор случайной строки в C # для WP7 - PullRequest
1 голос
/ 01 апреля 2011

Я создаю приложение WP7, которое, когда пользователь нажимает на изображение, случайным образом решает, что он получит.

Прямо сейчас у меня есть этот код:

string firstdoor = "";

string seconddoor = "";

string thirddoor = "";

и

string prize1 = "vacation to Hawaii with all expenses covered";

string prize2 = "used glue stick";

string prize3 = "pile of dog dung";

string prize3 = "vacation to Europe with all expenses covered";

string prize3 = "million dollars";

string prize3 = "blank CD";

string prize3 = "temporary tattoo";

string prize3 = "nickel";

string prize3 = "dime";

и

Я хочу случайным образом назначить door с prize с.

Например, когда пользователь касается изображения, dime назначается на thirddoor, nickel назначается на первую дверь, а million dollars назначается на secondoor.

Ответы [ 3 ]

6 голосов
/ 01 апреля 2011

Вот шаги, которые кажутся мне наиболее подходящими (не собираюсь писать весь код для вас):

  1. Поместите все призовые строки в массив.

  2. Создание трех случайных чисел от 0 до максимального количества призов.

  3. Назначьте каждой двери приз из массива призов с каждым из случайных чисел.

  4. ...

  5. Прибыль!

Редактировать

На самом деле, вот немного кода, чтобы помочь:

var randomGenerator = new Random();

string[] prizes = { "vacation to Hawaii with all expenses covered",
                    "used glue stick",
                    "pile of dog dung",
                    "vacation to Europe with all expenses covered" };

string firstDoor = prizes[randomGenerator.Next(prizes.Length)];
string secondDoor = prizes[randomGenerator.Next(prizes.Length)];
string thirdDoor = prizes[randomGenerator.Next(prizes.Length)];
1 голос
/ 02 апреля 2011

Джастин, ваш ответ в порядке, но может привести к тому, что 2 двери получат одинаковый приз.Я считаю, что это может быть лучше:

string[] prizes = new string[]
        {
            "Prize 1",
            "Prize 2",
            "Prize 3",
            "Prize 4",
            "Prize 5"
        };

        Random r = new Random();
        var choices = prizes.OrderBy(x => r.Next()).Take(3).ToArray();

        string firstDoor = choices[0];
        string secondDoor = choices[1];
        string thirdDoor = choices[2];
1 голос
/ 01 апреля 2011

При условии, что вы не хотите повторять какие-либо призы, решение немного сложнее, но вы можете внести в игру немного Linq и небольшой трюк со Random:

    var prizes = new string[] {
        "vacation to Hawaii with all expenses covered",
        "used glue stick",
        // etc
        "dime"            
    };

    var rand = new Random();

    var result = (from prize in prizes
                  orderby rand.NextDouble()
                  select prize).Take(3).ToArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...