Difference between revisions of "RandomString"

From Second Life Wiki
Jump to navigation Jump to search
(Shorter ByteCode example)
Line 28: Line 28:
     }
     }
     while(length > ++p);                                                     
     while(length > ++p);                                                     
    return emp;
}
</lsl>
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.
<lsl>
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;
     return emp;
}
}
Line 42: Line 61:


//Says something like fvl3d2zv4z</lsl>
//Says something like fvl3d2zv4z</lsl>
|helpers
|helpers
|notes
|notes

Revision as of 11:26, 10 January 2013

Summary

Function: string RandomString( integer length );

Returns a string that is made up of random letters and numbers based on the length given.

• integer length List of Random String

See also: String

Specification

<lsl>//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;

}</lsl>

<lsl>//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;

} </lsl> 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.

<lsl> 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;

} </lsl>

Caveats

  • The random String is created using the list, if you want to restrict some letters, or add more characters just add to the list.

Examples

<lsl> default {

   touch_start(integer total_number)
   {
       llSay(0, RandomString(10));
   }

}

//Says something like fvl3d2zv4z</lsl>