Я пытаюсь реализовать систему генератора случайных чисел; по сути, я читаю в хэше SHA1, который затем преобразуется в значение BigInteger:
String start = "abc";
String hash = utils.SHA1(start); //Generates an SHA1 hash of the string
byte[] bytes = hash.getBytes();
BigInteger big = new BigInteger(bytes);
Этот код генерирует BigInteger со значением:
811203900027758629330492243480887228261034167773619203962320290854945165232584286910163772258660
Что мне нужно как-то сделать (и вот тут я запутался), это уменьшить это число до гораздо более короткого числа с фиксированным числом десятичных разрядов.
Используя комбинацию модульной арифметики и функций Java Math API, есть разумный способ уменьшить это число до трехзначного числа. Или любую другую длину номера, которую я выберу.
В данный момент я просто конвертирую это огромное число в строку, а затем беру подстроку нужной длины. Однако я не совсем доволен этим, поскольку числа, которые я получаю, не настолько случайны, поскольку диапазон несколько ограничен 3 цифрами.
Цель всего этого состоит в том, чтобы вновь сгенерированное случайное x-значное число затем преобразовывалось в строку с использованием радиуса 36, чтобы также включать символы алфавита ASCII.
Любая информация или советы будут с благодарностью.
Спасибо !!