Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как преобразовать IP-адрес?

Лучший ответ:
https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%81%D...
ну и тоже полезно будет:
https://ru.wikipedia.org/wiki/IP
https://ru.wikipedia.org/wiki/IPv4

Худший ответ:
https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%81%D...
jodies.de/ipcalc?host=10.7.4.0&mask1=30&mask2=
Шлюзом может быть любой IP, но как правило это первый адрес: HostMin 10.7.4.1
Вопрос: Dajngo — как использовать одну таблицу на две модели?

Лучший ответ:
Наверное вам нужна proxy-model

Худший ответ:
Скорее всего, у вас неправильная архитектура.
1 таблица на две разные модели - плохое решение.
1 модель - 1 таблица.
Почему это плохо?
1. Код пишется для того, чтобы просто читаться - тем более на питоне.
2. Представьте, что через 3 года вы или другой прогер откроет ваш проект - как быстро он поймет эту неявную фишку с 1 таблицей на 2 модели?
3. Не идите с ходу в гору - переопределение менеджеров достаточно хитрая штука, постарайтесь вначале получить хорошую базу в Django.
Вопрос: Duplicate entry '14' for key 'PRIMARY'?

Лучший ответ:
Найдите максимальное значение `ext_id` и выполните командуALTER TABLE `таблица` AUTO_INCREMENT = максимальное_значение+1;

Худший ответ:
Serious Sam: Решение в лоб: создать ещё одно индексное поле , создать ещё такое же поле в связанной таблице , обновить записи основываясь на старой инфе, после этого уже удалить старые кривые поля в обоих таблицах и останется переименовать как было
Вопрос: Php, DiDom парсер. Как вывести href?

Лучший ответ:
исходя из "документации" Imangazaliev/DiDOM
должно так сработать:$track->href
или$track->attr('href');
$track->getAttribute('href');UPD
так даже на русском есть документация
какую вики вы читали?UPDforeach($r_div as $div)
{
  $track=$div->find('a[class="track-more-info"]');
}
здесь в $track получается массив с найденными элементами a[class="track-more-info"]
поэтому вам следует выводить либо так:foreach ($track as $item) {
    echo $item->href;
}
либо $list = $div->find('a[class="track-more-info"]');
$track = array_shift($list);
if (!empty($track)) {
    echo $track->href;
}

Худший ответ:
$track = $div->find('a[class="track-more-info"]');
$track->getAttribute('href');
или $track->attr('href');
попробуйте так
Вопрос: Какой плагин выбрать для Wordpress?

Лучший ответ:
Как правило то, что позволяет вам зарабатывать (магазин) платным не бывает. Ядро в виде вукоммерца бесплатно - потому что необходимо массово подсадить людей на него, а потом уже начать зарабатывать. Поэтому смиритесь и берите платное решение - к нему как правило полагается техническая поддержка. А это убережет ваше время и нервы в будущем.

Худший ответ:
Может кто знает хороший плагин?
Хороший - это тот который устраивает ТЕБЯ лично. Многих устраивают разные плагиные из репо. А кого не устраивают - покупают их платны версии, другие платные плагины. или заказывают то что ИМ надо.
Вопрос: А какой правильный принцип построения html страницы?

Лучший ответ:
Вы правы: через iframe блоки сайта никто не соединяет уже лет 20. В современных сайтах блоки хедера, футера, меню, контента верстаются отдельно и собираются в одну страницу, а вот каким образом тут уже есть варианты:самый простой - на уровне вебсервера с использованием SSI(Server Side Includes), но используется сравнительно редко;самый распространенный - когда бекэнд на лету собирает страницу перед отдачей клиенту, но это не ваш вариант;для статических же сайтов обычно используют либо "генераторы статических сайтов", либо настроенную систему сборки типа webpack/gulp, которая собирает css/js/html "блоки" в единое целое.
Так же сейчас популярны SPA(Single Page Application) сайты, в случае визиток инфа сразу же загружается со страницей, а там уже "разбивается" на разделы с помощью верстки/js/css, в случае чего-то более динамического инфа подгружаться на лету с помощью js.

Худший ответ:
У меня была идея, чтобы сайт состоял из одного index.html файла. А остальные страницы загружались бы в div при помощи JavaScript. Но как мне кажется, в этом случае будет не очень удобно править ошибки ... 
Пробуйте моё творение: includeHTML (я использую для SPA)
Вопрос: Могу ли я платить налоги с Uprowk в США?

Лучший ответ:
https://www.irs.gov/individuals/international-taxp...
https://www.cpajournal.com/2018/03/27/u-s-tax-resi...
Как частное лицо, таким образом, нет. Кроилово ведёт к попадалову. И вам это, к слову, всё равно ничего не дало бы.

Худший ответ:
форма на получение ITIN https://www.irs.gov/pub/irs-pdf/fw7.pdf
инструкция по на заполнению формы  и разъяснения по причинам для получения  ITIN https://www.irs.gov/instructions/iw7
Одна из причин получение ITIN - льготы по соглашению об избежания двойного налоогоблажения между странами
также в США есть форма бизнеса sole proprietorship - по сути как ИП в РФ, но в США оно не требует специальной регистрации, возможно используя эту форму бизнеса будет достаточно для получения ITIN.  Можно конечно заморочится и LLC зарегать  https://www.wyomingagents.com/order-new-company
вот тут про получение ITIN много написано
https://www.llcuniversity.com/irs/how-to-apply-for...
Вопрос: Какую фриланс-биржу выбрать для начала?

Лучший ответ:
 В какую биржу пойти новичку в сфере веб-разработок? Лучше всего пойти в офис на год-другой, иначе высокие шансы застрять на этой стадии надолго.

Худший ответ:
1. Freelancer.com - самый дружественный для начинающего (сам там начинал).
2. Upwork - там пожестче будет. Например, я попал под их колесо параноидальной мании безопасности - пока не выкарабкался из-под него ))
3. Toptal - 3% из 100% - Вы уверены, что попадете в эти 3 процента?
Все остальное - мусор, как и говорилось выше. Русские биржи - я терпеть не могу работать там и принципиально не работаю на русских биржах.
Вопрос: Preact/React как реализовать линки без отображения аттрибута href?

Лучший ответ:
import { Link } from "react-router-dom";

const Nav = () => (
  <nav>
    <Link to="/">Истории</Link>
    <Link to="/bilboard">Билборд</Link>
    <Link to="/loved">Избранное</Link>
  </nav>
);

Худший ответ:
Через history:import React from "react";
import { withRouter } from "react-router-dom";

const Nav = ({ history }) => (
 <nav>
  <div onClick={() => history.push('/')}>Истории</div>
  <div onClick={() => history.push('/bilboard')}>Билборд</div>
  <div onClick={() => history.push('/loved')}>Избранное</div>
 </nav>
)

export default withRouter(Nav);
Вопрос: Как правильно назвать rest-функции?

Лучший ответ:
Вообще это серьезный на самом деле вопрос.
Как правильно называть функции, как правильно называть переменные?
Этому вопросу посвящено определенное кол-во страниц в книгах: "Совершенный код",  "Чистый код: создание, анализ и рефакторинг" и т.д.  Если решили подключить перфекционизм, то вам стоит изучать эти книжки, хотя бы соответствующие главы.
Вообще, проблема с правильным именованием присуща всем языкам.
А конкретно с оформлением, да есть определенные стандарты. Например, есть языки где принят "горб верблюда" -  getUserId(), в python в основном используют нижнее подчеркивание -  get_user_id. Но это, имхо, уже мелочи.

Худший ответ:
Нет у тебя тут никакого REST. Сначала разберись, что это
Вопрос: Хочу попробовать себя в IT, с чего начать?

Лучший ответ:
Учиться без реальных задач довольно неэффективно.
Придумайте небольшую задачу и постарайтесь её реализовать. По ходу будет много вопросов решая которые многому научитесь.
Задачу желательно взять из предметной области которая вам хорошо знакома. Например автозапчасти/стройка в вашем случае. Или что-то ещё где вы можете идентифицировать реальные проблемы.
Я например когда решил изучать Angular 2 и язык Go стал делать приложение по учёту долгов https://DebtsTracker.io/ и бота для Телеграм https://t.me/DebtsTrackerRuBot так как была проблема с учётом того кому сколько должен.
Наличие реального реализованного проекта сильно поможет при дальнейшем трудоустройстве. А если повезёт, то может и доход приносить будет.

Худший ответ:
Зависит от того, что вы хотите делать в будущем. Программирование в конторе - это как работа на заводе, ничем не лучше.
Вопрос: Как лучше реализоваться механизм сохранения данных из большой формы?

Лучший ответ:
2017 год на дворе! Используйте аякс!

Худший ответ:
$(document).ready(function(){
      $("идентефикатор_кнопки_для_отправки_данных_формы").click(function() {
        //собераем все данные из формы
         var form_data = new FormData("идентификатор_формы");
            $.ajax({
            type: "POST", //Метод отправки
            url: "путь_до_файла",
            data: form_data,
            success: function() {
                        
            },
            error:function(){

            },
        });
    });
   });
Отправляем данные с формы ajax-ом. На сервере проверяем валидность данных и возвращаем ответ. В зависимости от ответа или выводим ошибку, или обнуляем поля формы, в зависимости от того, что вам необходимо.
Вопрос: Как на Samsung Smart TV смотреть ТВ по интернету так же легко как и кабельное (нужна лёгкая навигация для родителей)?

Лучший ответ:
Fork Player каналов завались  forkplayer.tv/smart-tv/forkplayer/#install

Худший ответ:
странный у вас смарт тв, у меня на lg по умолчанию открывается тв, сигнал идет со спутника без рессивера тв поддерживает dvb-s2. мама его освоила за пару часов
Вопрос: Насколько сейчас актуальны перемещаемые профили?

Лучший ответ:
чтобы не хранить файлы локально на ПК, а хранить все на СХД и снимать бекап только с одной железки, где все размещено. это вполне себе повод. но не далеко не единственный, далеко не всегда главный.
все зависит от особенностей работы в компании. на одной из прежних работ, было принципиальным требование, что бы сотрудник, в случае необходимости, мог сесть за любое свободное рабочее место (своего отдела, а некоторые вообще за любое в офисе), залогиниться, и получить свой профиль
в том числе, в случае выхода из строя компа, по любой причине, было принято снимать с полки резервный, залитый и преднастроенный системник, заменять неисправный комп, и в течении считанных минут реанимировать рабочее место. а со сбойнувшим системником, разбираться не спеша у себя в отделе (ИТ), а так же пополнять резерв ))
при таких требованиях, технология перемещаемых профилей, не зависит от календаря в принципеps а еще, кроме бекапов, мы использовали DFS для прозрачной миграции с сервака на сервак (или смены дисковой полки), и фоновое зеркалирование, на случай креша сервера, несущего данную нагрузку. типа 24/7, с повышенным уровнем отказоустойчивости, и минимальным временем восстановления.. как то так

Худший ответ:
Перемещаемые профили как были актуальны так и есть.
К бэкапу они никакого отношения не имеют, нет разницы что бэкапить.Или пора забыть о перемещаемых и если мощности позволяют то переводить на VDI. Вы можете делать что угодно, никто не запрещает.
А вообще делают такую систему которая отвечает поставленным задачам. Не зная что у вас за задачи и какие требования невозможно сказать что лучше.
Вопрос: Будет работать ноутбук с ddr3 большей частотой шины, чем предусмотрено?

Лучший ответ:
Главное чтобы не было памяти больше, чем это предусмотрено в ноуте. На данном ноуте как я понял максимум 8 ГБ

Худший ответ:
В целом да (и даже тайминги масштабируются под реальную частоту шины). Хотя бывают особенности наподобие ёмкости одного чипа — потому надо проверять. Особенно если матплата старенькая, а память современная.
Потому при апгрейде ноутбуков советую обращаться в фирмы, которые занимаются старыми ноутбуками. Они более-менее профессионально вскроют девайс, поставят память прямо при владельце, а потом проверят то, что сделали — у меня лично были два случая, когда по совершенно непонятной причине матплата не заводится. В одном случае я сменил память на другого производителя, комп служил 5 лет у меня и 5 лет у другого. В другом — матплата была старая, память вернул и решился на полный апгрейд, это дало 2× производительность на одном ядре (оба компа настольные).
А ещё был случай, когда у дамы был комп с ХРюней (≈2012), DDR1, денег на новый не было, я сказал: с такими запросами надо купить гигабайт, и всё. Купил, всё обошлось, довольна, как слон. В общем, вопрос везения.
Вопрос: Как в YII2 сделать выполнение определенного действия во всех контроллерах?

Лучший ответ:
Сделать некий базовый контроллер у которого переопределить методbeforeAction
В этом методе реализовать вашу логику по считыванию информации.
А затем те контроллеры в которых надо применять эту логику унаследовать от Базового.class BaseController extends \yii\web\Controller
{
    public function beforeAction($action)
    {
        if (!parent::beforeAction($action)) {
            return false;
        }
        // Тут прописать логику или вызвать отслеживающий сервис
        return true;
    }
}

class MyController extends BaseController
{
    public function actionIndex()
    {
.....

Худший ответ:
Как только пользователь заходит на любую страницу , надо считывать от куда он пришел, его ip и остальную инфу, как это можно сделать универсально, во всех экшнах? 
Все зависит от того что с этими данными стоит делать и зачем вообще эти данные в контроллерах нужны. Лучше всего реализовать отдельный компонент для этих целей, который будет ловить одно из соответствующих событий приложения и делать необходимые Вам действия
Вопрос: Почему лог journald в бинарном виде?

Лучший ответ:
Это связано с тем, что раньше программы писали для людей, а люди читали вывод программ. А теперь программы пишут для других программ, а люди больше не нужны.

Худший ответ:
Потому что systemd. Существуют множество хороших и бесплатных дистрибов. Также существуют люди, которые хотели бы на этом заработать. И они создали systemd - нечто, которое вроде как заменяет init, но при этом логи пишет в бинарном виде, для того, чтобы требовались платные услуги консультации - что это такое и с чем это поедают...
Идея "усложнить Linux, чтобы можно было продавать консультации" оказалась настолько коммерчески хороша, что сейчас найти дистриб без этого уродства достаточно нетривиальная задача...
Вопрос: По каком принципу МК отправляет и принимает сигнал?

Лучший ответ:
Если бы вы знали основы радиопередачи то вам было бы известно, что у электромагнитных волн нет ни плюса ни минуса. Так же вы бы знали, что напрямую к МК антенну подключить невозможно, требуется приемопередающее устройство, например такое илитакое. Существуют МК со встроенными передатчиками, например, такой

Худший ответ:
Начните отседова https://ru.wikipedia.org/wiki/%D0%94%D0%B5%D1%82%D...
Вопрос: Будут ли вопросы у банка при отсутствии расходов?

Лучший ответ:
Не очень понял, почему такой заголовок.
Я сам фрилансер, все деньги сначала перевожу на р/с, а оттуда после валютного контроля - на счёт физлица в другом банке.
Никто ругаться не будет. Это абсолютно нормальная практика для фрилансеров, у которых нет расходов, связанных с бизнесом. Но желательно платить налоги и взносы с того же р/с, с которого выводишь деньги.
Очень советую Модульбанк. Он заточен под малый бизнес и работает только с ИП и ООО. Там божественный валютный контроль. Если хранить доллары там же, то они дают 2% на остаток (при сумме от $1000 кажется). Такого процента для долларов нет больше ни в одном банке.
Если хочется именно выводить доллары, можно посмотреть в сторону Тиньков банка. Там хорошие условия для вывода с р/с на счёт физлица внутри банка. Но более убогий валютный контроль и в целом техподдержка для юрлиц похуже.

Худший ответ:
Банк Точка - вообще нет расходов, кроме налогов и никто слова не сказал и какое их собачье дело к моим расходам? Нет расходов и все тут. Есть закон запрещающий работать без расходов?
Вопрос: Каков уровень разработчика по данному тесту?

Лучший ответ:
Есть вопросы сложные для начинающего. Так что я бы сказал, что при 80-90% правильных ответов, можно было бы утверждать, что человек уверенный middle. А вот провести конкретный раздел сложно, так как надо смотреть ответы на какие именно вопросы не верные. Например "What do you think of AMD vs CommonJS?" - вряд ли джун имеет понятие о смысле вопроса в принципе.
Мне кажется там явно не хватает вопросов по git, canvas и сборщикам типа gulp.
Но вообще тесты это очень относительная вещь. Очень приблизительно все покажет. Ибо важна же еще и скорость разработки, а не только теоретические знания.

Худший ответ:
Проверка простая:
1. Попросите сверстать претендента строку поиска гугл (максимально соблюдая позиционирование и включая отображение в адаптивном режиме!).
2. Проверьте качество готовой вёрстки: здесь
Вопрос: Как получить изображение максимально малого объёма для микроконтроллеров?

Лучший ответ:
Для максимального сжатия изображений используют палитровую графику. Суть в том, чтобы в пиксельной матрице изображения заменить тяжелую информацию о цвете на значительно более легкий индекс цвета в некоторой цветовой палитре.
Для картинки считается количество уникальных цветов, потом все уникальные цвета складываются в палитру и индексируются, а матрица цветов заменяется на матрицу индексов цветов.
Число цветов в палитре принято делать от степени двойки, чаще всего встречаются палитры в 256 цветов. В этом случае размер индекса цвета в матрице занимает 1 байт. 16 цветов в палитре - индекс уже 4 байта. и.т.д.
Прозрачность в этом случае неудобств не доставляет, т.к. в палитре можно спокойно хранить цвет в формате RGBA.
Когда число цветов нужно вписать в некоторые рамки, для этого применяют разные алгоритмы так называемого dithering.

Худший ответ:
Я, конечно, кэп, но почему не попробовать что-то векторное? Если вопрос не о хранении "отрендеренного" изображения.
Вопрос: Какой выбрать монитор для верстальщика?

Лучший ответ:
Какой выбрать монитор для верстальщика в 2019 году?
широкоформатный или 2 вместо одногоЕсли ли смысл в 4k? 
нетНе раздражают ли верстальщиков изогнутые формы? 
если бы верстальщики отделились в отдельную группу несколько миллионов лет назад, то возможно у них бы появились настолько серьезные особенности психологии наряду с четвертой рукой.Как вы считаете?
программно или в уме

Худший ответ:
Зависит от рабочего места. Если монитор близко, то 27 может быть неудобен в горизонтальной ориентации. Слишком большой.
Вопрос: Почему не работают glypicons Bootstrap?

Лучший ответ:
В bootstrap 4 вообще отказались от glypicon
Юзайте fontawesome.io

Худший ответ:
Правильно писать glyphicon, у вас буква h пропущена. Проверьте
Вопрос: Как правильно написать unit тест?

Лучший ответ:
1) это не юнит тест, это интеграционный тест. Он проверят "часть системы в сборе", в вашем случае апишку. Если бы вы тестировали через UI (то есть через ангуляр) - это называлось бы end-to-end тест (от кнопок до базы данных мол).
2) На просторах инета вижу простые примеры тестов которые проверяют на true false
Давайте думать. Вот как бы вы проверяли такое руками? Можете придумать? А теперь можете написать скрипт который проверяет это за вас? Вот вы и умеете писать интеграционные тесты, это не очень сложно. Нужно только не зацикливаться.
Что вам по сути важно когда вы пишите апишку? Скорее всего вы хотите всегда знать что структура ваших ответов не сломалась. Что вы случайно не поменяли имя поля, или случайно не убрали нужные поля. Для этого есть такая штука как json schema. То есть мы берем json и проверяем на соответствие. Опять же для phpunit можно найти готовые ассерты что бы не пилить велосипед.
Далее, что еще нам может хотеться проверить - статус коды. Это опять же легко и думаю в документации к laravel это есть. Так же возможно вы захотите проверять заголовки но это уже специфичные штуки.
Словом все что вы хотите проверить - вы просто проверяете. Правильно - это когда оно выполняет ваши потребности.
Ну и возможно вам захочется проверить данные в json ответе. Тут уже есть кучи вариантов. Я например запилил свой велосипед для частичного сравнения JSON-а (ну не интересно мне все проверять). Можно и другими решениями это делать, но лично я такие штуки на этом уровне проверяю крайне редко, ибо... ну у меня другие тесты за проверку логики отвечают.

Худший ответ:
Стоит иногда обращаться к документации https://laravel.com/docs/5.3/application-testing#t...
Вопрос: Retina споры с дизайнером? «DPI влияет на размер текста»?

Лучший ответ:
16px везде будут равны 16px.
Если дизайнер упоролся, то сделайте ему тестовую страницу и пусть отстанет от вас уже.

Худший ответ:
При этом . (Если у нас 100px растровое изображение есть, то на ретине 2x будет растягиваться в два раза.) тоже не верно размер изображения тоже будет условно 100 px просто экран может передавать более детализованное изображение и начинает усреднять соседние пикселы из-за этого изображение будет мыльным
Вопрос: Какая реализация дерева лучше?

Лучший ответ:
Все зависит от того зачем вам это дерево.
1. Это Adjacency List, он хорош когда вам нужно часто писать в дерево и редко его читать.
2. Это Nested Set, он хорош когда вам нужно часто читать дерево и редко в него писать.
Для того чтоб построить часть дерева по первому варианту вам нужно либо вытаскивать ВСЕ записи из базы, и потом рекурсивно проходится по ним и строить его, либо писать встроенную процедуру для того чтоб рекурсия была на стороне базы данных. Также нужно следить чтоб не возникало циклических зависимостей в айдишниках
Второй вариант может вытянуть часть дерева со всеми его дочерними элементами одним запросом, но при изменении структуры запросы могут быть тяжелыми, особенно когда дерево внушительных размеров.
Лично я использую первый вариант для дерева комментариев, а второй для меню сайта. Хотя деревья всегда есть смысл кэшировать.

Худший ответ:
Это вы ещё про Nested Set и Materialized Path не слышали.
Вопрос: Как получить список папки из папок в go?

Лучший ответ:
Все проще: вы в строке files, err := ioutil.ReadDir(".")
сделали проверку на ошибку, а в files2 := ioutil.ReadDir("./"+file.Name())
забыли

Худший ответ:
и как быть, если не замарочится
писать на 1С
Вопрос: Бакалавриат. ИТМО или ВШЭ?

Лучший ответ:
Диплом никому не нужен. Нужны знания.
Вы кстати, кем работать дальше хотите? Исполнителем или рукводителем?

Худший ответ:
Судя по отзывам знакомых IT лучше в ИТМО, а маткматика в ВШЭ на Матфаке. Про экономику сказать не могу.
Вопрос: Стоит ли верстать полноценный лендинг?

Лучший ответ:
Верстать полноценно не стоит, да и вообще это тупо как-то.. возьмут верстку и потом скажут что не подошел.
В бутстрапе и так 12 колонок по дефолту. Верстать лучше на бустрапе или фоундейшн, или еще на чем-то.. на чистом css с нуля очень долго и прошлый век. 
Еще используй scss для ускорения.

Худший ответ:
Меня один раз так кинули, даже не отвечали, нормально ли сверстал или нет.
Сейчас пытаются второй раз так сделать. Я теряюсь в догадках, ведь действительное конторы некоторые проверяют таким образом умения. Но (мат)(мат)(мат) какого (мат). Это мое время, оплачивайте тогда. Верно?
Вопрос: Кто знает как изменить модуль формы для обратной связи joomla?

Лучший ответ:
Давно и успешно использую Simple Form 2.

Худший ответ:
Порой инет на тему: форма обратной связи Joomla 3 расширение.
Там хватает этого добра. Естьс расширенными настройками
https://extensions.joomla.org/
и тп.
Вопрос: Использовать ли в проектах elementor wordpress?

Лучший ответ:
Здравствуйте!
Темы продающиеся на themeforest в 80-90% случаев используют различные визуальные редакторы. Будь то elementor, но в основном часто встречается WpBakery Visual Composer. Также для продажи темы желательно прикрутить какой-нибудь фреймворк, а-ля Redux Framework.
Использовать ли виз. редакторы в Ваших личных проектах, решать сугубо вам. Я например, не люблю редакторы и юзаю кастомные поля (плагин ACF или фреймворк Carbon FIelds). Если пишете проект для клиента, то можно использовать виз. редакторы, чтобы они каждый раз вас не дергали в случае, если понадобится что-то добавить или удалить.

Худший ответ:
Elementor - используй смело. Код чистый, скорость иногда выше чем самопис, SEO не вредит. По этому его используют зарубежные студии, и все чаще заказы именно с ним. Очень гибок в настройках, сделать возможно все что душе угодно. Кстати работает с динамическими полями, ACF, Woocommerce и т д.
Вопрос: Как будет выглядеть алгоритм рулетки?

Лучший ответ:
random и хватит

Худший ответ:
Создайте массив: 0(зеленое), 1(красное), 2(черное), 3(красное), 4(черное)...
У вас получится 15 элементов.
Шанс каждого отдельного - 1/15, шанс красного 7/15, шанс черного 7/15.
Выбирать примерно как random(0...14).