Можно делать так (ниже чистый JavaScript, для вывода результата можно запустить в своем родном браузере в консоли):
var text = 'Съешь ещё этих мягких французских булок, да выпей чаю' //Нужный текст
var object = { //Какие буквы и на что можно заменять
'С': ['S','('],
'с': ['s','('],
'о': ['0','()'],
'н': ['n','|-|'],
'з': ['3']
}
function replacement(text, object, chance) { //Функция изменения буквы с указанным шансом (chance)
function randomChance() { //Функция случайного шанса
var random = Math.random() * 100 //Случайное число от 0 до 99
return (random < chance) ? true : false //Шанс включить замену текста
}
var symbols = text.split('') //Разбиваем текст на символы
for (var i = 0; i < symbols.length; i++) { //Замена символов
if (randomChance()) { //Если сработал шанс, продолжить замену, иначе не менять
for (var key in object) { //Поиск символа в объекте
if (key === symbols[i]) { //Если в объекте нашелся символ, продолжить замену, иначе не менять
//Просто лог, чтобы видеть изменения в консоли. Можно удалить
console.log('Позиция: ' + (i+1) +' - Изменяю букву "' + symbols[i] + '"' + ' на "' + object[key][Math.floor(Math.random() * object[key].length)] + '"')
symbols[i] = object[key][Math.floor(Math.random() * object[key].length)] //Заменить символ на случайный
break;
}
}
}
}
return symbols.join('') //В конце склеить массив измененных букв в строку
}
var result1 = replacement(text, object, 2) //Применить функцию замены букв с шансом в 2%
var result2 = replacement(text, object, 50) //Применить функцию замены букв с шансом в 50%
var result3 = replacement(text, object, 100) //Применить функцию замены букв с шансом в 100%
console.log('Шанс замены 2%. Результат: ' + result1)
console.log('Шанс замены 50%. Результат: ' + result2)
console.log('Шанс замены 100%. Результат: ' + result3)
А в BAS можно использовать так. Пример проекта: ReplaceSymbolsChance.xml
Это в основном для спама. Логика примерно такая: каждый символ с указанным шансом может измениться на то, что нужно.