Digitise ( text )
Returns same psuedo-random number for same text input
Average rating: 4.5 (32 votes) Log in to vote
Function definition: (Copy & paste into FileMaker's Edit Custom Function window)
Returns the same pseudo-random number ( 0 <= number < 1 ) for the same input text
Cannot guarantee returned number is unique for each unique text input. In most practical cases it can be considered unique.
How random is your list of sample names? (quick and dirty method)
For N names the Average value of all 'digitised' names should be about 0.5
Standard Deviation of values approx = (gamma/2) where gamma is the Euler-Mascheroni constant
If we sort the values and calculate a difference value between two consecutive values, the Average and Standard Deviation of these differences is approx 1/N
Using Firstname and Lastname data from Brian Dunnings great Free Sample Data file '50000.zip'
- create a new database file and import Firstname and Lastname fields from the sample data file.
- for each record create a number calculation field for the value: Digitise ( FirstName & " " & LastName )
- this list contains 4 duplicated names (FirstName & " " & LastName) resulting in 4 duplicated values
- duplicates can be found by calculated value not name; (calculated field for 'FirstName & " " & LastName' not created)
- The Average of all 50,000 values = 0.500883 ( Average 0.500000)
- The Standard Deviation of these values is 0.288149 (gamma/2 = 0.288608)
- the Average of the difference between ordered consecutive values is 0.000020 (1/N = 0.000020)
- the Standard Deviation of the difference between ordered consecutive values is 0.000020 (1/N = 0.000020 )
- If all calculated values are unique, only need the first [ Floor( 2*Log10(N)+1 ) ] decimal places to maintain uniqueness
- Repeat above using 'Random' instead of 'Digitise ( FirstName & " " & LastName )'; similar statisical results but you cannot find duplicate names by value
Generate a recoverable 4 digit pin number with leading zeroes from several text fields, eg A, B and C
pin = Let ( e = 4 ; Right ( Int ( ( Digitise ( List ( A ; B ; C ) ) + 1 ) * 10^e ) ; e ) )
|Nick Stockbridge, Transmedia Communications Ltd
Jan 22, 2011
|I have found this very useful for adding on a string of numbers to a URL. I needed it to slightly scramble a pattern which could have otherwise been predicted in an unwanted way. So thanks, just what I needed!|
Note: these functions are not guaranteed or supported by BrianDunning.com. Please contact the individual developer with any questions or problems.