Работа над классом с размером блока 256 элементов. И каждый раз, когда моя функция добавления вызывается до того, как я что-то храню; Я хочу создать равномерный случайный int в диапазоне [0,255]. То, что я хотел бы сделать, это до того, как эта функция завершится, чтобы отслеживать предыдущие значения, используемые для того, чтобы в следующий раз через функцию равномерное распределение случайных чисел автоматически пропустило эти значения, вместо того, чтобы проверять, ,Сокращение случайного равномерного распределения int на каждом проходе
template<class T>
class SomeClass {
struct Node {
unsigned idx;
std::shared_ptr<T> pT;
Node() : idx(-1), pT(nullptr) {}
Node(unsigned idx_, std::shared_ptr<T>& pT_) : idx(idx_), pT(pT_) {}
}; // Node
private:
Node m_storage[256];
static unsigned m_elementCount;
std::set<unsigned> m_indexesUsed;
public:
SomeClass(){}
~SomeClass(){}
void add(T& obj);
}; // SomeClass
template<class T>
unsigned SomeClass<T>::m_elementCount = 0;
template<class T>
void SomeClass<T>::add(T& obj) {
if (m_elementCount == 256) {
return; // My Code Base Is Bigger - If This Is Full This Array gets pushed into a vector,
// and all values get reset to default and we start over.
}
Node n;
// Generate Uniform Random In Distribution In The Range of [0,255]
// Excluding the Values from m_listIndexesUsed.
n.idx = std::uniform_random_int_distribution from [0,255] excluding previous selected numbers
n.pT = std::make_shared<T>(obj);
m_storage[n.idx] = n;
m_indexesUsed.insert(n.idx);
m_elementCount++;
}
Может определение значения между указанным диапазоном моего случаем [0255] генерируются, где на каждый последующего вызова определяет другое случайное значение, которое не было уже выбрано ранее с равномерным случайным распределением Int? Если да, то как это будет сделано?
EDIT
После рассмотрения некоторых комментариях ниже, они вырастили хороший момент. То, что действительно необходимо в моем случае, - это набор из 256 уникальных ключевых значений в диапазоне от 0 до 255, и их необходимо случайным образом перетасовать или скремблировать. Я дам ему подумать о том, как попытаться это сделать, но если кто-то захочет получить хороший пример того, что приемлемо. Я не против сдачи в работу, но иногда, когда я добираюсь до такой степени, что я не могу пройти мимо, и я начинаю тратить на нее слишком много времени, я просто хочу пройти мимо этого момента, чтобы я мог двигаться на.
Просто сделайте массив 0 ... 255 и 'shuffle' его. –
@ T.C. Нет; У меня есть генератор ключей или таблица с предопределенными значениями, которые хранятся в виде unsigned char в массиве из 256. Однобайтное шестнадцатеричное значение, например '0x03d2', является ссылкой на ссылку в сетке 16x16, где, если вы извлекаете ее на 2 координаты, тогда шестнадцатеричные значения unsigned char представляют собой '0x03' и' 0xd2', и это будет сохраненное ссылочное значение. Мой класс таблицы поиска уже определен и работает. Мой текущий класс будет использовать эту таблицу поиска. Я не хочу, чтобы информация была просто добавлена линейно. Я хочу, чтобы они были помещены случайным образом. –
@ T.C. Вставка немного медленнее, но с ее единственного 256 это не удар производительности. Но поиск и поиск довольно быстр. Я создаю контейнер цепочки, который будет случайным образом хранить элементы. Это своего рода функция безопасности. Без предварительно сгенерированной таблицы порядок элементов не имеет смысла. –