Nano Hash - криптовалюты, майнинг, программирование

Генерировать случайные пары элементов в векторе, которые принадлежат к разным группам, с лежащим в основе допущением вероятности

Предположим, у меня есть вектор id <- c(1:10), и я хочу создать случайные пары, исходящие из этого вектора, с ограничением, что каждая пара должна быть уникальной, и каждое число/идентификатор не может быть сопряжено с самим собой. Нравиться:

1-2,2-4,3-7 и так далее.

Я нашел решение этой проблемы в этом ответе stackoverflow:

pairOff <- function(x) {   
            x <- sample(x)  # to get first column into random order  
            M <- matrix(c(x, x[(seq_along(x) + sample(seq_along(x)[- (length(x) - 1)], 1))  %% length(x) + 1]),  ncol=2)   
           return(M) 
}

возврат, например:

      [,1] [,2]
 [1,]    1   10
 [2,]   10    4
 [3,]    4    9
 [4,]    9    5
 [5,]    5    2
 [6,]    2    8
 [7,]    8    6
 [8,]    6    3
 [9,]    3    7
[10,]    7    1

Теперь предположим, что каждый идентификатор принадлежит группе (1 или 2, но может быть и › 2):

group_ID <- c(1,1,1,1,1,2,2,2,2,2)

и существует вероятность того, что каждый идентификатор будет связан либо с другим идентификатором из той же группы, либо из другой группы:

p_owngroup <- 0.7
p_othergroup <- 1 - p_owngroup_ID

В функции pairOff вероятность всегда равна p = 0,5.

Мой вопрос: как я могу создать функцию для создания уникальных пар (не позволяя создавать пары с самим собой, и каждый идентификатор имеет только одного уникального партнера), где базовая вероятность для каждого идентификатора быть в паре с идентификатором из той же группы равна p_owngroup и быть в паре с идентификатором из другой группы p_othergroup?

12.04.2021

Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..