Как вывести сообщение с малым шансом?

В общем я только изучаю программирование на языке с++, и хочу сделал программу где один участок кода отвечает за рандомное приветствие, их 14, я сделал это при помощи функции rand();. Но, я хочу сделать так чтобы с каким-то малым шансом выпадало секретное приветствие, я думал это сделать указав интервал генерируемых чисел от 0 до 1000 и если выпадает 777 то выводиться секретное приветствие, но что-то не вышло, как сделать чтобы помимо 14 стандартных приветствий, выпадало секретное с малым шансом на основе функции rand();?

#include <iostream>
#include <windows.h>
#include <string>
#include <ctime>

using namespace std;
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    setlocale(LC_ALL, "rus");
    int SelectName;
    char UserName;
    int LoveProgramming;
    srand(time(NULL));
    int random;
    random = rand() % 14;
    {
        
    }
    if (random == 1)
    {
        cout << "Приветствую!" << " " << "Рад вас видеть дорогой <<Пользователь!>>" << endl; 
        cout << "\n";
    }

    if (random == 2)
    {
        cout << "Какая хорошая погода, рад что вы заглянули ко мне, дорогой <<Пользователь>>!" << endl;
        cout << "\n";
    }
    if (random == 0)
    {
        cout << "Ого, кто это ко мне заглянул?)" << " " << "Рад вас видеть дорогой <<Пользователь!>>" << endl;
        cout << "\n";
    }
    if (random == 3)
    {
        cout << "Добро пожаловать!" << " " << "Рад вас видеть дорогой <<Пользователь>>!" << endl;
        cout << "\n";
    }
    if (random == 4)
    {
        cout << "Доброго времени суток!" << " " << "Рад вас видеть дорогой <<Пользователь>>!" << endl;
        cout << "\n";
    }
    if (random == 5)
    {
        cout << "Пам-парам-пам-пам.." << " " << "Рад вас видеть дорогой <<Пользователь>>!" << endl;
        cout << "\n";
    }
    if (random == 6)
    {
        cout << "Hello World!" << " " << "Рад вас видеть дорогой <<Пользователь>>!" << endl;
        cout << "\n";
    }
    if (random == 7)
    {
        cout << "Как поживаете?" << " " << "Рад вас видеть дорогой <<Пользователь>>!" << endl;
        cout << "\n";
    }
    if (random == 8) 
    {
        cout << "Апчхи!" << " " << "Рад вас видеть дорогой <<Пользователь>>!" << endl;
        cout << "\n";
    }
    if (random == 9)
    {
        cout << "Хеллоу!" << " " << "Рад вас видеть дорогой <<Пользователь>>!" << endl;
        cout << "\n";
    }
    if (random == 10)
    {
        cout << "Салют!" << " " << "Рад вас видеть дорогой <<Пользователь>>!" << endl;
        cout << "\n";
    }
    if (random == 11)
    {
        cout << "Вот так встреча!" << " " << "Рад вас видеть дорогой <<Пользователь>>!" << endl;
        cout << "\n";
    }
    if (random == 12)
    {
        cout << "Сколько лет, сколько зим!" << " " << "Рад вас видеть дорогой <<Пользователь>>!" << endl;
        cout << "\n";
    }
    if (random == 13)
    {
        cout << "Хеллоу Ворлд!" << " " << "Рад вас видеть дорогой <<Пользователь>>!" << endl;
        cout << "\n";
    }
    if (random == 14)
    {
        cout << "Бонжур!" << " " << "Рад вас видеть дорогой <<Пользователь>>!" << endl;
        cout << "\n";
    } 

Ответы (1 шт):

Автор решения: Harry

Ну, например, так:

if (rand()%1000 == 0) 
{ 
    // Секретное приветствие, шансы 1:1024
} else {
    switch(rand()%14) 
    {
        case 0 : // Приветствие 0
                 break;
        case 1 : // Приветствие 1
                 break;
        case 2 : // Приветствие 2
                 break;
        ... 

Update

Ну, раз народ требует - то вот функция, которая выдает числа от 0 до N включительно (номера приветствий), причем число N с вероятностью p ("секретное приветствие"), а остальные - равновероятно. Теперь все довольны? :)

int getNum(int N, double p)
{
    static default_random_engine u(random_device{}());
    uniform_real_distribution<> r(0,1);
    double q = (1-p)/(N-1);
    return int(r(u)/q);
}

Вот она в действии: https://ideone.com/1HsrA9

→ Ссылка