# Generating a pseudorandom number at each site in an array

I’m new to programming and new to Xojo. I call a normal-distributed pseudorandom number, “Normal”, several times, each in different functions, and then do some math on it. For example, in function 1:

``g(i,j)*Normal``

I would like to have a different pseudorandom number at each site in the array given by i and j, but that number needs to be the same in function 1 as in function 2 for the particular choice of i and j, if that makes sense. What would be the easiest way to do that?

Hi Samuel,

what is the range of possible values for i and j ? If the range is not too large, you could have a global function that accepts the i,j parameters and returns your “normal” random number. The function could also store the number in a dictionary. The logic in your function would be:

• check in dictionary if a number has been previously returned for the i,j parameters
• if so, return that same number
• if not, generate a new number, store it and return it

again, this depends on the possible values for i and j.

Thanks, Bruno. Sorry for these basic questions, but I’m a beginner at this:

How do I create a global function in Xojo? I made a public function named Dictionary under App>>Methods. Is this “global” then?

Also, how do I “check” a dictionary, and how do I “store” a number? I have the following pseudocode written so far:

``````  For i=0 to Size-1
For j=0 to Size-1
if 'check number
Return 'number
else
'generate new number and store it
Return 'new number
end if
Next
Next``````

You can access your method with App.method name. If you want truly global then you need to create a module. Check the user reference on how to create and “store” properties, dictionaries and arrays.

@Bruno: Does the following work? I’m pretty shaky on the code as I’m still learning how to program.

``` Dim settings As New Dictionary For i=0 to Size-1 For j=0 to Size-1 if settings.HasKey(Normal(i,j)) then // check in dictionary if a number has been previously returned for the i,j parameters Return settings.Value(Normal(i,j)) // return that same number else Dim newNumber As Double // generate a new number settings.Value("new")="Normal(i,j)" newNumber = settings.Value("new") // store new number Return newNumber // return new number end if Next Next```