Буквенный рандом
#1

Доброго времени суток, как можно реализовать буквенный рандом?
Делал что то типо такого:
PHP код:
            new radom_letters_to_server_pass random(52) - 1;
            static 
english_alphabet_for_random[] =
            {
                
"a",
                
"b",
                
"c",
                
"d",
                
"e",
                
"f",
                
"g",
                
"h",
                
"i",
                
"j",
                
"k",
                
"l",
                
"m",
                
"n",
                
"o",
                 
"p",
                 
"q",
                 
"r",
                 
"s",
                 
"t",
                 
"u",
                 
"v",
                 
"w",
                
"x",
                
"y",
                
"z",
                
"A",
                
"B",
                
"C",
                
"D",
                
"E",
                
"F",
                
"G",
                
"H",
                
"I",
                
"J",
                
"K",
                
"L",
                
"M",
                
"N",
                
"O",
                
"P",
                
"Q",
                
"R",
                
"S",
                
"T",
                
"U",
                
"V",
                
"W",
                
"X",
                
"Y",
                
"Z"
            
}; 
PHP код:
            new letters_random english_alphabet_for_random[radom_letters_to_server_pass];
            
printf("%d"radom_letters_to_server_pass);
            
printf("%s"english_alphabet_for_random[radom_letters_to_server_pass]); 
Но выводит не те буквы, по значению.
У кого какие мысли, как ещё можно реализовать?
Reply
#2

random(52) - 1; - интересно посмотреть когда random(52) выдаст 0

letters_random - зачем тебе? создаешь и не используешь
Reply
#3

Массив неправильно объявлен, в твоём случае нужно делать так:
PHP код:
static english_alphabet_for_random[][2] = 
Но лучше хранить символы в виде символов, а не в виде строки.
Но всю эту систему можно сделать проще.
Вот, я написал удобную функцию:
PHP код:
stock ReturnRandomSymbol(bool:uppercase truebool:lowercase true)
{
    new 
value = -1;

    if (
uppercase && lowercase) {
        
value random(2);
    }

    if (
uppercase && (value == || value == -1)) {
        
value mathrandom('A''Z');
    }

    if (
lowercase && (value == || value == -1)) {
        
value mathrandom('a''z');
    }

    return 
value;
}

stock mathrandom(minmax)
{
    return (
random(max min 1) + min);

Использовать можно так:
PHP код:
printf("%c"ReturnRandomSymbol());
printf("%c"ReturnRandomSymbol(truefalse));
printf("%c"ReturnRandomSymbol(falsetrue)); 
Reply
#4

Quote:
Originally Posted by ZiGGi
Посмотреть сообщение
Массив неправильно объявлен, в твоём случае нужно делать так:
PHP код:
static english_alphabet_for_random[][2] = 
Но лучше хранить символы в виде символов, а не в виде строки.
Но всю эту систему можно сделать проще.
Вот, я написал удобную функцию:
PHP код:
stock ReturnRandomSymbol(bool:uppercase truebool:lowercase true)
{
    new 
value = -1;
    if (
uppercase && lowercase) {
        
value random(2);
    }
    if (
uppercase && (value == || value == -1)) {
        
value mathrandom('A''Z');
    }
    if (
lowercase && (value == || value == -1)) {
        
value mathrandom('a''z');
    }
    return 
value;
}
stock mathrandom(minmax)
{
    return (
random(max min 1) + min);

Использовать можно так:
PHP код:
printf("%c"ReturnRandomSymbol());
printf("%c"ReturnRandomSymbol(truefalse));
printf("%c"ReturnRandomSymbol(falsetrue)); 
Про параметры ReturnRandomSymbol можно по подробней?
Reply
#5

Quote:
Originally Posted by kennydalglish
Посмотреть сообщение
Про параметры ReturnRandomSymbol можно по подробней?
Разве не очевидно? Если uppercase равно true, то в рандом попадут символы в верхнем регистре, если false, то не попадут. С lowercase точно также, только тут символы в нижнем регистре. Если оба параметра равны true, то может выпасть символ как в нижнем, так и в верхнем регистре. Если оба параметра равны false, то функция вернёт код ошибки -1.
Reply
#6

Спасибо, а как например вернуть многозначное число? то есть не 1 (например), а 111222333 и т.д
Reply
#7

Quote:
Originally Posted by kennydalglish
Посмотреть сообщение
Спасибо, а как например вернуть многозначное число? то есть не 1 (например), а 111222333 и т.д
Вот ещё функция, в дополнение к предыдущей:
PHP код:
stock GetRandomWord(output[], lengthbool:uppercase truebool:lowercase truesize sizeof(output))
{
    if (
length >= size) {
        return 
0;
    }
    
    for (new 
0lengthi++) {
        
output[i] = ReturnRandomSymbol(uppercaselowercase);
    }
    
output[length] = '\0';
    return 
1;

Использовать так:
PHP код:
new word[128];
GetRandomWord(word10);
printf("%s"word); 
Reply
#8

http://forum.sa-mp.com/showpost.php?...&postcount=561
Reply


Forum Jump:


Users browsing this thread: