2014-10-15 3 views
0

В этом вопросе Getting N random numbers that the sum is M целью было создание набора случайных чисел, суммируемых на определенное число N. После прочтения этого вопроса, я начал играть с идеей создания наборов чисел, удовлетворяющих этому условиюСоздание двух наборов чисел, где сумма каждого множества и сумма их точечного произведения равна N

sum(A) == sum(B) && sum(B) == sum(A * B)

Примером этого может быть

A <- c(5, 5, -10, 6, 6, -12) 
B <- c(5, -5, 0, 6, -6, 0) 

В этом случае три суммы равным нулю. Очевидно, что эти множества не являются случайными, но они удовлетворяют условию. Есть ли способ генерировать «случайные» наборы данных, которые удовлетворяют вышеуказанному условию? (В отличие от использования небольшого алгоритма, как в приведенном выше примере.)

(Примечание: Я потащился это как R вопрос, но язык действительно не имеет значения для меня.)

+0

У вас есть особое распределение в виду? –

+0

Любое распространение будет прекрасным. – Sandy

ответ

1

Вам нужно будет определить первый вектор в n-мерном пространстве, а второй будет иметь N-2 степени свободы (то есть случайные числа), так как сумма и один угол уже определены. Второй вектор должен быть преобразован в N-мерное пространство; Существует бесконечное число преобразований, которые могут работать, поэтому, если вам не важно распределение вероятностей полученных векторов, просто выберите тот, который наиболее интуитивен для вас. В первом ограничении есть хорошая геометрическая интерпретация: он ограничивает второй вектор (гипер-) плоскостью в N-мерном пространстве; второе ограничение не имеет простой геометрической интерпретации. выезд hyperspherical cooridnates.

1

Вы можете создать один устанавливается полностью случайным образом. И произвольно генерируйте все числа в множестве B, за исключением двух чисел. Поскольку у вас есть два уравнения, вы должны решить эти два числа.

Смежные вопросы