|
При пошаговой отладке работает правильно, а в пользовательском режиме нет | ☑ | ||
---|---|---|---|---|
0
logo23
08.07.13
✎
10:12
|
Добрый день.
Если Индекс = 1 Тогда НомерШага = 0; Пока НомерШага <> 13 цикл ПоследнийИндексМассива = Массив2.ВГраница(); ГСЧ = Новый ГенераторСлучайныхЧисел(); счВопросов = ГСЧ.СлучайноеЧисло(0, ПоследнийИндексМассива); ЭлементМассива2ДляПередачи = Массив2.Получить(счВопросов); Массив.Вставить(НомерШага, ЭлементМассива2ДляПередачи); НомерШага = НомерШага + 1; КонецЦикла; КонецЕсли; При выполнении этого кода в пошаговом режиме отладки, получается нужный мне результат, Массив заполняется разными числами, как и требуется. Однако при выполнении программы в пользовательском режиме без использования точек останова, Массив заполняется одинаковыми числами. Как так?) Подскажите как это обойти? |
|||
1
Cube
08.07.13
✎
10:13
|
Кэш.
|
|||
2
ДенисЧ
08.07.13
✎
10:14
|
Вынеси создание ГСЧ за цикл
|
|||
3
logo23
08.07.13
✎
10:14
|
(2) Так мне в него 14 значений надо запихнуть
|
|||
4
Cube
08.07.13
✎
10:15
|
(3) И что тебя смущает?
|
|||
5
Darych
08.07.13
✎
10:16
|
(3) в гсч ты ничего не запихнешь...)
|
|||
6
logo23
08.07.13
✎
10:18
|
(5) в массив, а не ГСЧ
(4) без цикла как? 14 раз писать? |
|||
7
Darych
08.07.13
✎
10:18
|
1 раз до цикла
|
|||
8
logo23
08.07.13
✎
10:18
|
Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Индекс = 0; Пока Выборка.Следующий() Цикл //////а = 1+1; ВыборкаПоВопросам = Выборка.Выбрать(); а = 0; Массив2 = Новый Массив(); Пока ВыборкаПоВопросам.Следующий() Цикл Массив2.Вставить(а, ВыборкаПоВопросам.Код); а = а + 1; КонецЦикла; а = а - 1; ГСЧ = Новый ГенераторСлучайныхЧисел(); счВопросов = ГСЧ.СлучайноеЧисло(0, а); ЭлементМассива2ДляПередачи = Массив2.Получить(счВопросов); Массив.Вставить(Индекс, ЭлементМассива2ДляПередачи); Индекс = Индекс + 1; КонецЦикла; вот тут тоже у меня ГСЧ в цикле и работает все правильно |
|||
9
logo23
08.07.13
✎
10:19
|
(7) 1 раз до цикла он мне даст 1 случайное число, а мне нужно 14 случайных чисел
|
|||
10
kosts
08.07.13
✎
10:20
|
ГенераторСлучайныхЧисел (RandomNumberGenerator)
Описание: Генератор случайных чисел инициализируется начальным числом из параметра. Последовательность случайных чисел для одного и того же начального числа будет одинакова. Новый ГенераторСлучайныхЧисел() Описание: Генератор случайных чисел инициализируется временем работы операционной системы с момента старта. Как говорят вынеси создание ГСЧ за цикл. |
|||
11
Darych
08.07.13
✎
10:20
|
)))
|
|||
12
Jonny_Khomich
08.07.13
✎
10:21
|
апасный 1эсник
|
|||
13
Lama12
08.07.13
✎
10:23
|
(0)
1. Вынеси конструктор ГСЧ за цикл. 2. Прочитай про генераторы псевдослучайных чисел общую теорию. Без второго, первое не работает. |
|||
14
logo23
08.07.13
✎
10:24
|
(10) (11) (12) Все спасибо))
Понедельник мля....еще не проснулся) |
|||
15
exwill
08.07.13
✎
10:25
|
(0) В это трудно поверить, но похоже ты добился невероятного.
Вставь внутрь цикла другой пустой цикл типа: для и=1 по 1000 цикл конеццикла и проверь. |
|||
16
logo23
08.07.13
✎
10:26
|
Смущало то что в предыдущем цикле ГСЧ = Новый ГенераторСлучайныхЧисел();
поставил в цикл и все работало верно |
|||
17
kosts
08.07.13
✎
10:27
|
(16) Наверное диапазон разный, вот разные случайные выдавал. Думаю если "а" будет одно и тоже, то и случайное число будет одно и тоже.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |