cancel
Showing results for 
Search instead for 
Did you mean: 

Generate random 6 digit from a given letterset

Pakhi
New Contributor III

I have a scenario where I have to generate random 6 digit code in every snaplogic execution from given letter set below.

0123456789ABCDEF

can any one help in this.

7 REPLIES 7

viktor_n
Contributor II

Hi @Pakhi,

Try this.
sl.range(6).map(x => "0123456789ABCDEF"[Math.round(Math.random()*15)]).join('')

Regards,
Viktor

Pakhi
New Contributor III

Thanks its working!
Can you please explain this expression , actually how its working internally.

sl.range(6) - Generates me a list with number of elements.
Inside the parameter is specified how many elements to have the list.
Ex. [0,1,2,3,4,5]

After that with the map() function I iterate through that list.
And while iterating, for each element is generated a random number between 0 and 15.

Random number is generated with Math.random() and Math.round() functions.

  • Math.random() - Generates a decimal number between 0 and 1.
  • Math.random()*15 - Generated number is multiplied by the number of characters in the string.
  • Math.round(Math.random()*15) - Decimal number is rounded to the nearest whole number.
    Ex. 3.656 - will be rounded to 4.

Generated random number I use it as an index from which I get character from the string.
Ex. "0123456789ABCDEF"[4] = "3" (returns the 4th index from the string).

Now if we look at the preview of this expression, result will be list of strings.
Ex. ["3", "8", "A", "1", "C", "D"]

At the end the list is joined with join() function. This function is used for transforming list into string. Parameter inside join function ('') means that it will join the elements together without nothing between the elements.

Result at the end will be this:
"38A1CD"

Hope this will help understand the expression 🙂

Pakhi
New Contributor III

excellent explanation 🙂