Современное решение JS: (и находится в O (n))
const nums = new Set();
while(nums.size !== 8) {
nums.add(Math.ceil(Math.random() * 100));
}
console.log([...nums]);
Возможно, можно выйти из оболочки к сценарию Python, который использует Chardet: Universal, Кодирующая Детектор . Это - переопределение обнаружения кодировки символов, которое используемый Firefox, и используется много различных приложений . Полезные ссылки: код Mozilla , научно-исследовательская работа это было на основе (иронически, моему Firefox не удается правильно обнаружить кодирование той страницы), короткое объяснение , подробное объяснение .
существует также Python Универсальное Кодирование Детектора , который можно проверить.
Мое предположение:
ASCII? Никакая современная ОС больше не использует ASCII. Они все используют коды на 8 битов, по крайней мере, подразумевая, что это - или UTF-8, ISOLatinX, WinLatinX, Макрочеловек, Shift JIS или независимо от того, что там.
единственный тест, о котором я знаю, должен проверить на недопустимые символы UTF-8. Если Вы находите кого-либо, то Вы знаете, что это не может быть UTF-8. То же, вероятно, возможно для UTF-16. Но когда это не набор Unicode, тогда будет трудно сказать, какой кодовой страницей Windows это могло бы быть.
Большинство редакторов я знаю соглашение с этим, позволяя пользователю выбрать значение по умолчанию из списка всей возможной кодировки.
существует код там для проверки законности символов UTF.