Имя: Пароль:
1C
1С v8
Случайные числа в 1с
0 sqr4
 
25.03.14
11:34
Нужно перебрать все числа в определенном диапазоне случайным образом.
1 rbcvg
 
25.03.14
11:34
ок. понятно.
2 ДенисЧ
 
25.03.14
11:35
Перебирай, кто ж тебе мешает?
3 VikingKosmo
 
25.03.14
11:35
ГенераторСлучайныхЧисел (RandomNumberGenerator)
ГенераторСлучайныхЧисел (RandomNumberGenerator)
Методы:

СлучайноеЧисло (RandomNumber)

Конструкторы:

Конструктор по умолчанию
Формирование неинициализированного объекта

Описание:

Генератор случайных чисел.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение.
4 Heckfy
 
25.03.14
11:35
ГенераторСлучайныхЧисел (RandomNumberGenerator)
СлучайноеЧисло (RandomNumber)
Синтаксис:

СлучайноеЧисло(<НижнийДиапазон>, <ВерхнийДиапазон>)
Параметры:

<НижнийДиапазон> (необязательный)

Тип: Число.
Нижний диапазон. Задается целым числом и не может быть меньше 0.
Значение по умолчанию: 0
<ВерхнийДиапазон> (необязательный)

Тип: Число.
Верхний диапазон. Задается целым числом и не может быть больше 4294967295 (2^32 - 1), а также меньше значения параметра <НижнийДиапазон>.
Значение по умолчанию: 4294967295
Возвращаемое значение:

Тип: Число.

Описание:

Возвращает случайное целое число в заданном диапазоне. Нижний диапазон не может быть меньше 0, а верхний диапазон не может быть больше 2^32 - 1.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение.
Пример:

ГСЧ = Новый ГенераторСлучайныхЧисел(255);
ГСЧ.СлучайноеЧисло(0, 10000);
5 sqr4
 
25.03.14
11:38
Т.е если я пройдусь циклом 30 раз то
ГСЧ.СлучайноеЧисло(1, 30) выдаст мне все числа без задвоений правильно?
6 Heckfy
 
25.03.14
11:38
(5) Нет.
7 GROOVY
 
25.03.14
11:39
(5) Нет
8 sqr4
 
25.03.14
11:39
т.е нужно запоминать выпавшие числа и сравнивать их со случайным и если не совпадет, ждать когда выпадет нужный? Мне кажется это будет долго, больше придумать ничего не могу
9 Heckfy
 
25.03.14
11:40
10 Naumov
 
25.03.14
11:40
(5) Даже лучшие генераторы случайных чисел не дают такого распределения.
Хотя есть определенные вырожденные случаи, которые могут перебрать все единственный раз.
11 KarpovDeniska
 
25.03.14
11:41
(8) можно менять диапазон каждый раз
12 artems
 
25.03.14
11:42
(8) как вариант загони все числа в тз, генератором выбирай строку тз и удаляй и т.д.
13 sqr4
 
25.03.14
11:45
(11) Нужно именно перебрать числа в определенном диапазоне (9) не нашел ничего
14 KarpovDeniska
 
25.03.14
11:47
в (12) самый простой вариант
15 Godofsin
 
25.03.14
11:47
(12) а чо? норм вариант
16 Серый Пес
 
25.03.14
11:48
(13) А почему я нашел? :)
17 sqr4
 
25.03.14
11:50
Про (12) я помоему тоже самое написал, только корявым языком) если нужно будет перебрать числа от 1 до 10000, когда в ТЗ будет одна строка, сколько нужно будет ждать чтобы генератор выбрал именно ее?
(16) Наверно потому что у тебя руки растут откуда надо в отличии от меня)
18 Molinor
 
25.03.14
11:51
(17) Зачем ждать, ставь диапазон равный количеству строк.
19 sqr4
 
25.03.14
11:52
дошло! спасибо
20 PuhUfa
 
25.03.14
11:52
(17) СлучайноеЧисло(0, КоличествоСтрокВТЗ). Выбранную чстроку из ТЗ удаляй со сдвигом
21 Heckfy
 
25.03.14
11:54
(20) СлучайноеЧисло(0, (КоличествоСтрокВТЗ-1)) по моему. А то за границы выйдет...
22 vde69
 
модератор
25.03.14
11:59
(5) если тебе такое нужно то реализовать такое можно немного по другой методе.

1. готовим ТЗ, первую колонку заполняем простым инкрементом 1,2,3 и т.д.
2. вторую колонку заполняем рандомом с заранее большим диапазоном (например если всего 100 строк то делаем ранд(10000)), при этом совпасть конечно может, но вероятность низкая
3. сортируем по второй колонке
4. простым циклом имеем случайную последовательность с гарантироваными значениями от 1 до 100
23 ale-sarin
 
25.03.14
12:08
(22) А еще можно в пункт 2 сунуть Новый УникальныйИдентификатор. И по нему сортировать.
24 Eugene_life
 
25.03.14
13:12
(0) Первым шагом через генератор СЧ определить количество ТЗ, разбить весь диапазон на это кол-во ТЗ. В каждой ТЗ через генератор СЧ поочередно выбирать строку, и удалять ее.