Как получить случайное значение с двух диапазонов?
Мне кажется лучше так #include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;

char randomeResponse(char a)
{
    int r = rand()%4;
    while(r == (a - 'a')) r = rand() % 4;
    return char(r + 'a');
}

int main()
{
    srand(time(NULL));
    cout << randomeResponse('b');
    return 0;
}
#include <boost/random/mersenne_twister.hpp>
#include <boost/random/uniform_int.hpp>

char randomResponse(const char correctAnswer) {
    static boost::random::mt19937 rng;
    static boost::random::uniform_int_distribution<char> uni('a', 'd');

    char result;

    while((result = uni(rng)) == correctAnswer);

    return result;
}
Для c++11:#include <random>

char randomResponse(const char correctAnswer) {
    static std::mt19937 rng;
    static std::uniform_int_distribution<char> uni('a', 'd');

    char result;

    while((result = uni(rng)) == correctAnswer);

    return result;
}