Если вам нужен дистрибутив, который предотвращает повторные значения, вы можете использовать простой алгоритм повторного отклонения.
, например
int GetRand(int nSize)
{
return 1 + (::rand() % nSize);
}
int GetDice()
{
static int nPrevious=-1;
while (1) {
int nValue = GetRand(6);
// only allow repeat 5% of the time
if (nValue==nPrevious && GetRand(100)<95)
continue;
nPrevious = nValue;
return nValue;
}
}
Этот код отклоняет значения повторения 95% времени , что делает повторения маловероятными, но не невозможными. Статистически это немного уродливо, но это, вероятно, даст желаемые результаты. Конечно, это не помешает распространению вроде «5 4 5 4 5». Вы могли бы стать фаворитом и отказаться от второго последнего (скажем) 60% времени и третьего последнего (скажем) 30%.
Я не рекомендую это как хороший игровой дизайн. Просто предлагая, как добиться того, чего вы хотите.
Можно использовать Полученное Преобразование Столбца , в котором Вы создадите новый выходной столбец и установите его значение к 2. Можно тогда использовать тот столбец при выводе к SQL.