char randomResponse(char correctAnswer)//принимает правильный вариант ответа, возвращает неверный
{
srand ( time(NULL) );//сбросить "random"
switch(correctAnswer)
{
case 'a': return (char)rand() %(int)'d' + (int)'b';//получение случайного символа с диапазона 'b'-'d'
}
}
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
char range[] = "abcd";
int rangeLen;
char randomResponse(char correctAnswer)//принимает правильный вариант ответа, возвращает неверный
{
int r = rand() % (rangeLen-1);
if (r >= correctAnswer)
++r;
return range[r];
}
int main()
{
srand(time(0));
rangeLen = strlen(range);
// test
for (int i = 0; i < rangeLen; i++)
printf("%c ", randomResponse(range[i]));
_getch();
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;
}
#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;
}