Как рандомизировать в WPF - PullRequest
2 голосов
/ 26 ноября 2011

Здравствуйте, я новичок в WPF, и у меня есть некоторый опыт работы с ASP.NET, но это совершенно новое, например, ярлыки, которые я буду делать label.Content вместо label.Text, в любом случае .. Я пытаюсь сделать простой форма, где при нажатии на кнопку отображается 5 разных случайных чисел ..

Когда я построчно отлаживаю этот код, он рандомизируется и имеет строку с разными числами, но когда я не отлаживаю и не запускаю его сразу и не нажимаю кнопку, он показывает один и тот же номер для всех? , не уверен почему ... так в идеале у меня будет

[1] [23] [45] [24] [34]

Это дает мне этот результат, если я отлаживаю и прохожу, но если я не отлаживаю и просто запускаю программу, я получаю

[23] [23] [23] [23] [23]

Любая помощь будет высоко ценится

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            int[] numbers = new int[5];
            StringBuilder sb = new StringBuilder();

            List<int> nums = new List<int>();
            foreach (int i in numbers)
            {
               int rand = RandomNumber(1,59);
               nums.Add(rand);
            }


            string numsList = string.Empty;

            foreach (int items in nums)
            {
                numsList += "[" + items.ToString() + "]";
            }

            lblNumber.Content = numsList.ToString();
        }

        private int RandomNumber(int min, int max)
        {
            Random random = new Random();
            return random.Next(min, max);
        }


    }
}

1 Ответ

3 голосов
/ 26 ноября 2011

Не следует каждый раз создавать новый Random (вместо этого сделайте его доступным только для чтения).Семя всегда может быть одинаковым, в противном случае при создании новых экземпляров вскоре один за другим.Он работает только в режиме отладки, так как экземпляры создаются медленнее, когда вы проходите через него.

MSDN:

По умолчанию конструктор беспараметрических параметров RandomКласс использует системные часы для генерации своего начального значения, в то время как его параметризованный конструктор может принимать значение Int32, основанное на количестве тиков в текущем времени.Однако, поскольку часы имеют конечное разрешение, использование конструктора без параметров для создания различных случайных объектов в тесной последовательности создает генераторы случайных чисел, которые создают идентичные последовательности случайных чисел.

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