08.10.2015, 22:50
Тогда вот вам почти самая гибкая и красивая функция
Перед употреблением посоветуйтесь с врачом.
PHP код:
stock GenerateString(str[], str_size, numchars, ranges[] = { 'a', 'z', 'A', 'Z', 'а', 'я', 'А', 'Я', '0', '9' }) //т.к. нельзя передавать напрямую двухмерный массив, приходится делать так. Указываем промежутки символов попарно.
{
if(str_size <= numchars) return 0;
new ranges_num = strlen(ranges);
if(ranges_num < 2 || ranges_num % 2 != 0) return 0; //как минимум одна пара и четное количество
for(new x; x < ranges_num; x++)
{
if((x + 1) % 2 == 0 && ranges[x - 1] > ranges[x])
{
return 0; //второй символ из пары должен быть больше (или равен, если они одинаковы) первого
}
}
for(new i, r; i < numchars; i++)
{
r = random(ranges_num / 2);
str[i] = random((ranges[(r * 2) + 1] - ranges[r * 2]) + 1) + ranges[r * 2];
}
str[numchars] = EOS;
return 1;
}