Имя: Пароль:
1C
1С v8
При пошаговой отладке работает правильно, а в пользовательском режиме нет
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) Наверное диапазон разный, вот разные случайные выдавал. Думаю если "а" будет одно и тоже, то и случайное число будет одно и тоже.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn