Software Venture Consulting

FileMaker Pro downloads & Resources
FileMaker Custom Functions
FileMaker Web Viewer Examples
FileMaker Pro & Lasso Consulting
Training
FileMaker Books
FileMaker Articles
FileMaker Error Reference

Free Web Tools
Free FileMaker Tools

Personal Pages
Videos
Adventures
Links

Shopping Cart
Shopping Cart

Search:

Free Newsletter
Signup


Contact


Privacy Policy



FileMaker is a registered trademark of FileMaker, Inc. in the U.S. and other countries.

 

 FileMaker Pro Custom Functions

List  |  Show Random  |  Upload  |  Add This to Your Site

xShuffle(INPUT;TIMES)

Rate this function:  

RatingRatingRatingRatingRating
  Average rating: 4.2  (22 votes)
  Discuss this Custom Function

Nick Lightbody, Deskspace Systems Limited
http://www.deskspace.com

To shuffle a string

Sample Input:
"abcdefghijklmnopqrstuvwxyz";99
Sample Output:
xzfrijqpkymcuswvbhdetolnga


 Then copy & paste into FileMaker Advanced's Edit Custom Function window.

Click here to copy To Clip Manager if you have myFMbutler's Clip Manager installed

Description:

This is a simple tail recursive function used to create a shuffled string for substitution in an encryption process. Typically the process will use a large number of such substitution strings and hence the need to create a large series required this function.

Each cycle moves random character to the end of the string, hence TIMES must be larger than the length of the string.

Note: these functions are not guaranteed or supported by BrianDunning.com. Please contact the individual developer with any questions or problems.

This is my Custom Function and I want to edit it

Discuss:

Parameter names are different from definition.

Why don't you use control to selecting character to move?
1st call you need to select from all chars.
2nd call you need to select from all chars excluding last one, it is already selected before.
and so on.

unix, Japan
January 13, 2016 6:28pm

Thanks - I have amended the parameter names.
When creating a block of keys, we normally shuffle the normal set of characters say a 1000 times, as it is very quick. In practice the quality of the result is no different.
With a longer set of characters, in Japan, perhaps this could be more of an issue?
However, on a random shuffle it is best, I think, to select from all every time, not to exclude the last one, since otherwise it is surely less random?
Cheers, Nick

Nick, Sussex UK
January 13, 2016 6:48pm

"Each cycle moves random character to the end of the string, hence TIMES must be larger than the length of the string."

If you select a random character one at time, move it from the input string to the output string and repeat this until you run out of characters, you will end up with a completely randomized string. There will never be a need to it more times than the length of the input string.

comment, VR
January 16, 2016 7:29am

xs ( INPUT ; OUTPUT )
/*
INPUT: string to shuffle
OUTPUT:call with ""
*/
Let ( [
l = Length ( INPUT ) ;
r = Int ( Random * L ) + 1
] ;
Case ( l < 2 ; OUTPUT & INPUT ; xs ( Replace ( INPUT ; r ; 1 ; "" ) ; OUTPUT & Middle ( INPUT ; r ; 1 ) ) )
)

unix, Japan
January 20, 2016 7:49pm

Make a comment about this Custom Function (please try to keep it brief & to the point). Anyone can post:

Your Name:
City/Location:
Comment:
characters left. If you paste in more than 1500 characters, it will be truncated. Discuss the function - advertisements and other useless posts will be deleted.
Answer 0 + 3 =
Search for Custom Functions:

Custom Functions Widget
Download the Custom Function Dashboard Widget for OS X
Keep all the latest Custom Functions right at your fingertips!

Newest Custom Functions:

1. ProperAllWords ( text )
  (Thu, Dec 14, 5:19pm)
2. MatchExist ( SourceTable.Field ; DestTable.Field ; ReturnField )
  (Thu, Dec 14, 1:07pm)
3. BVR_Format ( bvr )
  (Wed, Dec 13, 5:32pm)
4. NumberToHexadecimal(NumberValue)
  (Fri, Dec 08, 8:54am)
5. Get_BaseTable
  (Thu, Dec 07, 4:27pm)
6. JSONCreateVarsFromKeys ( json ; namespace )
  (Wed, Dec 06, 8:21pm)
7. GetTableNzme ( field )
  (Tue, Dec 05, 9:16pm)
8. TimeFormatAsText ( theTime )
  (Mon, Nov 13, 1:59pm)

RSS Feed of Custom Functions