|
Как в СКД получить случайное число?
| ☑ |
0
RedTop
27.01.16
✎
06:37
|
Собственно сабж. Как СКД построчко получить случайное число? Остаток мне нужно уменожить на число от 1 до 10
Про
ГСЧ = Новый ГенераторСлучайныхЧисел(255);
ГСЧ.СлучайноеЧисло(0, 10000);
знаю, но как в СКД это засунуть?
|
|
1
los_hooliganos
27.01.16
✎
06:42
|
В СКД можно использовать внешние функции. Главное чтобы функции были в общем модуле.
|
|
2
los_hooliganos
27.01.16
✎
06:42
|
Погугли язык выражений скд
|
|
3
RedTop
27.01.16
✎
07:17
|
Сделал функцию. Запихнул ее вызов в СКД в Вычисляемые поля. Работает. НО. Случайное поле вычисляется ОДИН раз! видать только при инициализации, а мне нужно чтобы случайное число расчитывалось для КАЖДОЙ строчки отчета (
|
|
4
sda553
27.01.16
✎
07:24
|
Функцию от номера строки или от любого значения в строке выборки можно сделать?
|
|
5
Лодырь
27.01.16
✎
07:27
|
(3) Метод середины квадрата можно использовать ) И вычислять на основе предыдущего значения.
|
|
6
фобка
27.01.16
✎
07:30
|
(3) Задержку может надо реализовать?
|
|
7
mehfk
27.01.16
✎
07:37
|
(3) Потому что если ты сделал как в (0), то у тебя начальное число всегда одинаковое. Делай без указания начального значения Новый ГенераторСлучайныхЧисел().
|
|
8
RedTop
27.01.16
✎
07:43
|
(7) Спасибо!
|
|
9
RedTop
27.01.16
✎
08:10
|
а вот и нет.. один фик...
отчет формируется за секунду, и если указать диапазон от 1 до 4, то число на весь отчет будет одно... 1.2.3.4
полистал гугл. проблема не новая, но решения нет...
|
|
10
ЧеловекДуши
27.01.16
✎
08:15
|
(9) Зачем?
А так можно отчет разделить.
Сперва заполнить ТЗ, а потом подсунуть в СКД :)
|
|
11
LordCMEPTb
27.01.16
✎
08:21
|
(9) Скорее всего проблема в том, что при отсутствующем параметре конструктора генератора случайных чисел, берется значение текущей даты (ну или что-то похожее). Если нужно за одну секунду наклепать много конструкторов, то лучше явно указывать параметр конструктора (передавать, к примеру, номер строки отчета), что-то вроде
ГСЧ = Новый ГенераторСлучайныхЧисел(НомерСтроки);
Ну или обнаглеть и делать конструктор на основании времени:
ГСЧ = Новый ГенераторСлучайныхЧисел(ТекущаяУниверсальнаяДатаВМиллисекундах());
|
|
12
mehfk
27.01.16
✎
08:31
|
(9) Сделай переменную глобального модуля типа глГенераторСлучайныхЧисел и не создавай новый ГСЧ каждый раз в своей функции.
|
|