Имя: Пароль:
1C
1С v8
Генерирование случайных чисел в диапазоне
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-ке оказывается есть ГСЧ, я как-то сам писал функцию, думал нет такого
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.