|
Генерирование случайных чисел в диапазоне | ☑ | ||
---|---|---|---|---|
0
tatoshka0403
18.03.14
✎
12:31
|
Необходимо для заполнения температурного листа получать значения из диапазона.
Нижнее значение от 36.2 до 36.6, верхнее от 36.6 до 36.9. Проблема заключается в том, что при работе ГСЧ если использовать одно и тоже начальное значение, то в цикле время не меняется и выдается одно и тоже значение. А если сказать, что начальное значение, это предыдущее значение, полученное из диапазона, то при получении максимального числа ГСЧ попадает на диапазон один и тот же и ничего не изменяет соответственно. Пример: Процедура КнопкаВыполнитьНажатие(Кнопка) СлучЧисло2 = 36.6; СлучЧисло = 36.2; Начало = Объект.ДатаЗаезда; Пока Начало <= Объект.ДатаВыезда Цикл ТекСтрока = Температура.Добавить(); ТекСтрока.дата = Начало; Начало = Начало + 24*60*60; СлучайноеЧисло(СлучЧисло); ТекСтрока.ТемпУтро = СлучЧисло; СлучайноеЧисло2(СлучЧисло2); ТекСтрока.ТемпВечер = СлучЧисло2; КонецЦикла; КонецПроцедуры Функция СлучайноеЧисло(СлучЧисло) НецелоеЧисло2 = 36.6; ГСЧ = Новый ГенераторСлучайныхЧисел; СлучЧисло = ГСЧ.СлучайноеЧисло(СлучЧисло*100, НецелоеЧисло2*100); СлучЧисло=Окр(СлучЧисло/100,2); Возврат СлучЧисло; КонецФункции Функция СлучайноеЧисло2(СлучЧисло2) НецелоеЧисло2 = 36.9; ГСЧ = Новый ГенераторСлучайныхЧисел; СлучЧисло2 = ГСЧ.СлучайноеЧисло(СлучЧисло2*100, НецелоеЧисло2*100); СлучЧисло2=Окр(СлучЧисло2/100,2); Возврат СлучЧисло2; КонецФункции Помогите побороть задачу. |
|||
1
mzelensky
18.03.14
✎
12:36
|
(0) читай СП внимательно:
ГенераторСлучайныхЧисел (RandomNumberGenerator) Конструктор по умолчанию Синтаксис: Новый ГенераторСлучайныхЧисел(<НачальноеЧисло>) Параметры: <НачальноеЧисло> (необязательный) Тип: Число. Начальное число, которым инициализируется генератор случайных чисел. Описание: Генератор случайных чисел инициализируется начальным числом из параметра. Последовательность случайных чисел для одного и того же начального числа будет одинакова. |
|||
2
mzelensky
18.03.14
✎
12:37
|
Уточняю - заполни параметр "НачальноеЧисло". Заполнить его можешь, например, как сумма чисел:
Час(ТекущаяДата()) + Минута(ТекущаяДата()) + Секунда(ТекущаяДата()) |
|||
3
Жан Пердежон
18.03.14
✎
12:38
|
ГСЧ = Новый ГенераторСлучайныхЧисел; - убери из цикла
|
|||
4
Ненавижу 1С
гуру
18.03.14
✎
12:39
|
средняя температура по больнице что-ли?
|
|||
5
tatoshka0403
18.03.14
✎
14:24
|
Так в том-то и проблема, что начальное значение мне нужно, чтобы число генерировалось из диапазона. А если заполнить НачальноеЧисло Час(ТекущаяДата()) + Минута(ТекущаяДата()) + Секунда(ТекущаяДата()), то получается, что функция срабатывает в одну и туже секунду и результат одинаковый.
|
|||
6
1dvd
18.03.14
✎
14:27
|
средняя температура по больнице генератором случайных чисел...
феерично |
|||
7
grigo
18.03.14
✎
14:34
|
После однократной инициализации ГСЧ будет выдавать последовательность разных случайных чисел, не надо его в цикле инициализировать,
|
|||
8
tatoshka0403
18.03.14
✎
15:30
|
Спасибо большое, получилось.
|
|||
9
Lama12
18.03.14
✎
17:38
|
(6) Так - автоматизация. Раньше в качестве генератора случайных чисел работала сестра Клава.
|
|||
10
Дмитрий666
18.03.14
✎
17:54
|
в 8-ке оказывается есть ГСЧ, я как-то сам писал функцию, думал нет такого
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |