RandomString

De DigiWiki.

Version du 19 février 2014 à 15:45 par Djphil (discuter | contributions)
(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)

Example:

default
{
    touch_start(integer total_number)
    {
        llSay(0, RandomString(10));
    }
}
// Says something like fvl3d2zv4z

Specification:

// This version provides random numbers and letters
string  RandomString(integer length) {
list characters = ["0","1","2","3","4","5","6","7","8","9","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"];
string emp;
integer p;
    do{
       emp += llList2String(characters, llRound(llFrand(llGetListLength(characters) - 0 + 1 )));
    }
    while(length > ++p);                                                    
    return emp;
}
// This version is only strings
string  RandomString(integer length) {
list characters = ["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"];
string emp;
integer p;
    do{
       emp += llList2String(characters, llRound(llFrand(llGetListLength(characters) - 0 + 1 )));
    }
    while(length > ++p);                                                    
    return emp;
}

Because strings held in lists occupy an overhead of 18 bytes per string, the above functionality can be written using less bytecode space by holding the alphabet in one string and extracting letters with llGetSubString(). The following user defined function is about 200 bytes shorter in Mono ByteCode than the previous UDF.

string RandomString(integer length)
{
    string characters = "abcdefghijklmnopqrstuvwxyz";
    string emp;
    integer p;
    integer q;
    do
    {
       q = (integer) llFrand(26);
       emp += llGetSubString(characters, q, q);
    }
    while(++p < length);                                                    
    return emp;
}
Outils personnels
donate
Google Ads