Random
|
|
dimmer |
Дата: Пн, 23.12.2013, 12:26 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
29
Замечания:
±
На сайте с 22.11.2013
Статус:
Offline
|
Добрый день! Подскажите пожалуйста, необходимо выполнять определенное действие, после рандомного временного промежутка. Причем использовать pause не могу. Это не сам код, это пример. ...... ...... oper var word .... ..... random oper ... operas: oper = oper - 5000 if oper <= 0 then gosub deystv endif If oper <= 0 then random oper endif .... ... goto operas ... End
При этом постоянно выдается значение 3. Подскажите что не так? Или как можно по другому реализовать? Спасибо
Сообщение отредактировал
dimmer - Пн, 23.12.2013, 13:00
|
|
|
|
xvovanx |
Дата: Вт, 24.12.2013, 01:30 | Сообщение # 2 |
Группа:
Модераторы
Ранг:
Помогаю всем
Сообщений:
332
Замечания:
±
На сайте с 02.05.2013
Статус:
Offline
|
думаю что ваша проблема в том, что вы от случайного числа отнимаете 5000 и переменная (при <5000) уходит в минус, а также в обоих условиях проверки фигурирует oper <= 0 как то у вас напутанно . Сделайте так
random oper if oper <=5000 then действие1 else ' (oper >5000) действие2 endif
Сообщение отредактировал
xvovanx - Вт, 24.12.2013, 01:39
|
|
|
|
dimmer |
Дата: Вт, 24.12.2013, 15:04 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
29
Замечания:
±
На сайте с 22.11.2013
Статус:
Offline
|
Спасибо за уделенное время - это сразу!)))
Подсчет - это уже дело второе, само random выдает одно и тоже число. К тому же, при вашем варианте. Вероятность наступления действия 1 при 5000 мала, при допустим 33000 примерно 50/50 - то есть каждый проход программы у меня будет с вероятностью 50% выполнено действие. Промежуток между циклами около 3000 мс. Если предположить, что в среднем из 20 проходов около 10 будут выполнены - это мне по условию не подходит. Мне же нужен рандомный интервал от 3-45 сек. Как мне кажется, вычитанием и получу примерно желаемое. (Подчеркиваю , как мне кажется - возможно не прав)
Хотя при правильном подборе числа сравнения - наверно Ваш метод сработает. Попробую. Но вот random мне 3 выдает всегда((((Добавлено (24.12.2013, 15:04) --------------------------------------------- С выдачей одного и того же числа вопрос решен. Выдается как и полагается. Воспользовался вашим вариантом. Работает, но частенько бывает что в 2 проходах выполняется действие в обоих. Как можно реализовать избавиться от этого? заранее спасибо!
|
|
|
|
dimmer |
Дата: Вт, 24.12.2013, 15:22 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
29
Замечания:
±
На сайте с 22.11.2013
Статус:
Offline
|
Вот что получается Добавлено (24.12.2013, 15:22) --------------------------------------------- Промежутки между кругами даже не 3 сек а 1. Обычно 3-5 раз в подряд действие выполняется. На фото промежутки между действием
|
|
|
|
xvovanx |
Дата: Вт, 24.12.2013, 15:41 | Сообщение # 5 |
Группа:
Модераторы
Ранг:
Помогаю всем
Сообщений:
332
Замечания:
±
На сайте с 02.05.2013
Статус:
Offline
|
Не понятно, что ваша программа делает (круги, секунды ), но условия if then (вилки значений) можно понатыкать хоть 100 штук. Вот мой пример из программы с анализом температуры и включением вентилятора
If T<34 Then Low FAN_MIN Low FAN_MAX EndIf If T>35 And T<39 Then High FAN_MIN Low FAN_MAX EndIf
If T>40 And T<=55 Then High FAN_MIN High FAN_MAX EndIf
If T>55 And T<=57 Then High FAN_MIN High FAN_MAX U_PWM=U_PWM-10 If U_PWM<10 Then U_PWM=10 EndIf If T>57 Then High FAN_MAX U_PWM=0 Low U_REG EndIf Return
|
|
|
|
dimmer |
Дата: Вт, 24.12.2013, 16:04 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
29
Замечания:
±
На сайте с 22.11.2013
Статус:
Offline
|
Программа передает данные через ИК (действие 1) По этом основное тело работает на прием ик данных.
И вот это действие 1 мне нужно чтобы повторилось не чаше чем через 5 сек мин и 45 сек макс В этом промежутке рандомно, без повторений
|
|
|
|
xvovanx |
Дата: Вт, 24.12.2013, 18:08 | Сообщение # 7 |
Группа:
Модераторы
Ранг:
Помогаю всем
Сообщений:
332
Замечания:
±
На сайте с 02.05.2013
Статус:
Offline
|
А зачем случайный( рандомный) промежуток времени использовать? Может лучше задавать определенные ( нужные) промежутки времени через таймер
|
|
|
|
dimmer |
Дата: Ср, 25.12.2013, 00:07 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
29
Замечания:
±
На сайте с 22.11.2013
Статус:
Offline
|
По условию мне нужен именно рандом. К тому же все таймеры уже задействованы
|
|
|
|