Результат
У этой страницы вообще нет серверной части. Вставленная таблица разбирается кодом JavaScript внутри вашего же браузера, график рисуется на элементе canvas на вашей машине, файл экспорта собирается локально. Ничего не загружается, не хранится и не пишется ни в какие логи. После загрузки страницы можно отключить сеть — всё продолжит работать, и это самый простой способ проверить обещание самостоятельно.
Факты и границы применимости
| Что меняется | Регистр отдельных букв — латиница и кириллица; остальные символы не трогаются |
|---|---|
| Вероятность переключения | Для каждой буквы отдельно бросается «монетка» — Math.random() < заданная доля |
| Интенсивность 25% | В среднем каждая четвёртая буква меняет регистр на противоположный |
| Интенсивность 50% | В среднем каждая вторая буква меняет регистр — значение по умолчанию |
| Интенсивность 75% | В среднем три буквы из четырёх меняют регистр — самый «шумный» вариант |
| Повторная генерация | Кнопка «Сгенерировать заново» пересчитывает результат тем же текстом без нового ввода |
Когда этот метод вводит в заблуждение
- Результат недетерминирован: при одном и том же входном тексте и той же интенсивности каждый запуск выдаёт разный набор изменённых букв — это Math.random(), а не хеш-функция, и повторить точно такой же результат нельзя.
- Интенсивность — это вероятность для каждой отдельной буквы, а не точная доля. При 50% в коротком тексте из 10 букв может случайно поменяться и 3, и 8 букв — на больших текстах фактическая доля стабильно приближается к заданной, на коротких может заметно отличаться.
- Меняется только регистр — буквы остаются теми же самыми буквами. Цифры, пунктуация, эмодзи и пробелы никогда не участвуют в переключении, даже при интенсивности 75%.
- Если в букве нет различия между заглавным и строчным вариантом в Unicode (редкие случаи для некоторых алфавитов), переключение для неё просто не происходит, хотя «монетка» всё равно бросается.
Как это считается
Текст обходится посимвольно. Для каждого символа проверяется, буква ли это (латиница или кириллица) — если нет, символ копируется в результат без изменений.
Для каждой буквы генерируется случайное число от 0 до 1 через Math.random(). Если оно меньше заданной интенсивности (0.25, 0.5 или 0.75), регистр буквы переключается: заглавная становится строчной, строчная — заглавной.
Переключение делается сравнением буквы с её собственным верхним регистром: если буква совпадает со своим ToUpperCase()-вариантом, она уже заглавная и переводится в нижний регистр, и наоборот.
Кнопка «Сгенерировать заново» не меняет текст в поле ввода — она просто ещё раз запускает тот же расчёт, и поскольку внутри используется Math.random(), результат каждый раз получается новым.
Вопросы и ответы
Почему при одинаковом тексте результат каждый раз разный?
Переключение регистра каждой буквы решается случайным числом — это намеренно, инструмент не запоминает и не воспроизводит предыдущий результат. Нажмите «Сгенерировать заново», чтобы получить ещё один случайный вариант.
Что означает интенсивность 25/50/75%?
Это вероятность того, что регистр конкретной буквы поменяется на противоположный. При 75% в среднем меняются три буквы из четырёх, при 25% — примерно одна из четырёх. Точное число зависит от случая, особенно на коротких текстах.
Можно ли получить конкретный, повторяемый результат?
Нет, генератор специально не детерминирован. Если нужен предсказуемый результат — например, каждая вторая буква без случайности — используйте не этот инструмент, а обычный конвертер регистра.
Меняются ли цифры и знаки препинания?
Нет, переключается регистр только у букв. Цифры, пробелы, эмодзи и пунктуация всегда остаются такими же, как в исходном тексте.
Текст куда-то отправляется при генерации?
Нет, весь расчёт, включая случайные числа, выполняется прямо в вашем браузере.