Если разные классы приложения должны извлекать одно или несколько случайных чисел, где должен быть инициализирован генератор случайных чисел для создания хороших случайных последовательностей?Сколько генераторов случайных чисел я должен использовать?
В частности, мне нужно построить несколько деревьев решений, чтобы обучить случайный лес. Конструкция каждого дерева решений включает в себя следующие этапы:
- Загружен набор данных (организованный на несколько рядов данных).
- Некоторые строки в этом наборе данных случайным образом выбраны для создания нового набора данных. Этот новый набор данных будет постепенно раздроблен во время роста дерева.
- Этот новый набор данных используется для того, чтобы вырастить дерево решений: для создания каждого узла необходим произвольный выбор из нескольких строк этого нового набора данных (перед созданием одного узла вам необходимо случайным образом сгенерировать несколько небольших подмножеств этого нового набора данных).
Три этапа, перечисленные выше, выполняются для построения каждого дерева решений. Только что описанная процедура предусматривает, что генерация случайных чисел происходит несколько раз. Например, второй шаг должен обеспечить, чтобы каждое дерево решений обучалось с набором данных, немного отличающимся от исходного, поэтому генератор случайных чисел должен избегать генерации равных наборов данных (или, в любом случае, вероятность этого возникновения должна быть очень низкой) ,
В сущности, в этой процедуре можно выделить два источника случайности:
- поколение
N
случайного набора данных, каждый из которых приручить одного дерева решений; - Прежде чем вы создадите узел, вы должны выполнить случайные выделения из заданного набора данных
M
.
Сколько генераторов случайных чисел следует использовать? Поскольку у меня есть класс, который реализует случайный лес, а другой класс, реализующий дерево решений, я думал, что инициализирую генератор случайных чисел в первом классе (первый источник случайности) и другой генератор случайных чисел в второй класс (второй источник случайности). Это верно?
В целом, каковы рекомендации по выбору правильного числа генераторов псевдослучайных чисел?
'int main() {srand (time (NULL));/** /} ' – andre
два генератора случайных чисел не более случайны, чем один генератор случайных чисел. – argentage
Мне нравится PRNG« Мерсенн Твистер ». Он имеет очень длительный период 2^19937 - 1. Если вам нужно, вы можете сделать его объектом для одновременного выполнения нескольких операций. –