Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
21 / 21 / 3
Регистрация: 11.01.2011
Сообщений: 72

Повтор генерации случайного числа

29.08.2012, 15:42. Показов 2610. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый уважаемые форумчане.
Задача стоит следующая : нужно на форму выводить случайные числа в определенном диапазоне. Для этого использую класс Random.
Затем это число присваиваю лейблу на форме. Проблема в следующем,как повторить генерацию этого числа с последующим присвоение этого числа тому же лейблу. Делаю так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public partial class Form1 : Form
    {
         Random randt = new Random();
          public Form1()
         {
            InitializeComponent();
                                        
         }
 
        private void Form1_Load(object sender, EventArgs e) // при загрузке формы хочу запустить генирацию чисел
        {
 
            while (true) // бесконечный цикл
            {
                lable1.Text = randt.Next(30, 40).ToString(); // генерирую число и присваиваю его контролу
                Thread.Sleep(500); // приостановка потока на 500 мс
            }
                
        }
        
               
    }
но таким образом не получается.
когда убираю
while (true) // бесконечный цикл
и
Thread.Sleep(500); // приостановка потока на 500 мс
то генерируется 1-но число(и это правильно) но мне нужно чтоб оно изменялось по истечению кокого-то времени для этого и приостанавливаю поток Thread.Sleep(500);
Буду признателен за любые комментарии.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.08.2012, 15:42
Ответы с готовыми решениями:

Алгоритм генерации случайного UUID
Написать алгоритм генерации случайного UUID вида 550e8400-e29b-41d4-a716-446655440000, все символы случайны. Алфавит возможных символов:...

Выбор случайного числа
Столкнулась с проблемой, о которой раньше как-то не задумывалась... Предположим, у меня есть 3 числа - 1, 3, 8. Мне из них нужно выбрать...

Генерация случайного числа от 100 до 1000 (последняя цифра числа должна быть "5")
Как с генерировать случайное число от 100 до 1000 при этом число всегда должно заканчиваться на 5.?

11
8 / 9 / 1
Регистрация: 21.08.2012
Сообщений: 34
29.08.2012, 15:57
Ну понятное дело. Интерфейс просто зависает. Либо выноси логику за метод OnLoad с добавлением Application.DoEvents(), либо делай в отдельном потоке, либо асинхронно вызывай метод...

Да, если все-таки надо автоматически это все делать при загрузке формы, то делай в обработчике Form Shown:
C#
1
2
3
4
5
6
while (true) // бесконечный цикл
 {
    label1.Text = randt.Next(30, 40).ToString(); // генерирую число и присваиваю его контролу
    Application.DoEvents();
    Thread.Sleep(500); // приостановка потока на 500 мс
}
1
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
29.08.2012, 16:02
use timer
0
2 / 2 / 1
Регистрация: 16.11.2010
Сообщений: 84
29.08.2012, 16:10
У меня с таким кодом даже форма не отображается при запуске.
0
8 / 9 / 1
Регистрация: 21.08.2012
Сообщений: 34
29.08.2012, 16:12
Видимо, это и была проблема топикстартера...
0
21 / 21 / 3
Регистрация: 11.01.2011
Сообщений: 72
29.08.2012, 16:16  [ТС]
Fmamedov, спасибо!! Сделал так
C#
1
2
3
4
5
6
7
8
9
private void Form1_Shown(object sender, EventArgs e)
          {
              while (true)
              {
                  lable1.Text = randt.Next(40, 50).ToString();
                  Application.DoEvents();
                  Thread.Sleep(500);
              }
          }
eg01st, такая же беда и у меня была.
novi4ok, хотя и эта идея у меня была.Алгоритм прост при истечении 3-7 сек вызывается метод который генерирует новое значение но это слишком грамостко. Идея Fmamedov мне больше подходит. Всем спасибо тема закрыта!!!
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
29.08.2012, 20:13
мб попробовать
C#
1
2
3
4
5
6
7
8
9
private static Random randt = new Random();
 
private void Form1_Load(object sender, EventArgs e) /
        { 
            while (true) // бесконечный цикл
            {
                lable1.Text = randt.Next(30, 40).ToString();
            }                
        }
0
21 / 21 / 3
Регистрация: 11.01.2011
Сообщений: 72
30.08.2012, 17:02  [ТС]
Теперь другая проблема: при
C#
1
2
3
4
5
6
7
8
9
private void Form1_Shown(object sender, EventArgs e)
          {
              while (true)
              {
                  lable1.Text = randt.Next(40, 50).ToString();
                  Application.DoEvents();
                  Thread.Sleep(500);
              }
          }
изменяется значение только 1-го лейбла(при изменении порядка присвоений лейблам значений,значение присваивается только впереди идущему ) а мне нужно чтоб всех (около 15).15 потоков создавать как-то не хочется а вот с таймером не получается. Делаю так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private void Form1_Load(object sender, EventArgs e) // при загрузке формы активируем таймер
          {
              timer = new System.Timers.Timer();
              timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
              timer.Interval = 1000;
              timer.Start();
          }
          
 
          void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) // по истечению времени вызываем гениратор
          {
              labl_TempChil.Text = randt.Next(40, 50).ToString();
          }
ругается на последнюю строчку кода. Как сделать правильно или как использовать асинхронный вызов метода предложенный Fmamedov
0
8 / 9 / 1
Регистрация: 21.08.2012
Сообщений: 34
30.08.2012, 17:16
Во-первых, то, что я предложил - это не асинхронный вызов метода. Во-вторых, покажи код, который я предложил тебе, только с 15 лейблами.
1
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
30.08.2012, 17:21
Цитата Сообщение от doker1r Посмотреть сообщение
изменяется значение только 1-го лейбла(при изменении порядка присвоений лейблам значений,значение присваивается только впереди идущему ) а мне нужно чтоб всех (около 15).
C#
1
2
3
4
5
6
7
8
            var r = new Random();
            while (true)
            {
                for (int i = 1; i < 16; i++)
                    Controls["label" + i.ToString()].Text = r.Next(40, 50).ToString();
                Application.DoEvents();
                System.Threading.Thread.Sleep(500);
            }
нэ? или я чето не понял?
0
21 / 21 / 3
Регистрация: 11.01.2011
Сообщений: 72
30.08.2012, 22:01  [ТС]
Решил проблему!
Я делал вот так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void Form1_Shown(object sender, EventArgs e)
          {
              Generator(labl_TempChil);
              Generator(label_Temp_Bak);
          }
 
          private void Generator(Label lbl)
          {
              while (true)
              {
                  lbl.Text = randt.Next(20, 30).ToString();
                  Application.DoEvents();
                  Thread.Sleep(1000);
              }
          }
И при такой реализации менялся тока 1-й лебл(вызов которого первый после события Shown) А работает оно вот таким образом( и ето правильно)
C#
1
2
3
4
5
6
7
8
9
10
private void Form1_Shown(object sender, EventArgs e)
        {
            while (true)
            {
                label1.Text = r.Next(30, 40).ToString();
                label2.Text = r.Next(20, 30).ToString();
                Application.DoEvents();
                Thread.Sleep(1000);
            }
        }
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
30.08.2012, 22:16
C#
1
2
3
4
5
private void Form1_Shown(object sender, EventArgs e)
          {
              Generator(labl_TempChil);
              Generator(label_Temp_Bak);
          }
Вот к чему приводит отсутствие обучения структурнуму программированию и переход сразу
"На круутые плюсы/шарп/VB(нужное подчеркнуть). Человек даже не может понять, куда ушло управление
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.08.2012, 22:16
Помогаю со студенческими работами здесь

Генерация случайного двадцатишестизначного числа
Пишу небольшую программку. Но есть проблема: генерация случайных чисел невозможна в нужном мне диапазоне. Максимум девятизначные числа...

Вероятность выпадения случайного числа
Здравствуйте! У меня идёт мозговой штурм. Я задался вопросом, какова вероятность выпадения случайного числа в заданном диапазоне от 1 до...

Повтор случайного числа в строке матрицы
#include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; int main() { const int COLUMN = 8; const int ROW = 22; int...

Вопрос по генерации случайного числа.
Здрасьте еще раз! На этот раз я никак не могу понять, как сделать генерацию случайных чисел (заполнение массива), которая зависит от...

Время генерации случайного числа
Вопрос к опытным пользователям. Может кто подскажет время генерации случайного числа (скажем по нормальному закону распред.) в сравнении...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru