Friday, October 23, 2009

the illusion of randomness

This post and its ideas are, like so many of my endeavors, probably pretty obscure and generally of little use. That said, I have occasionally wished that Sketchpad contained a random variable mechanism. A truly random variable is not systematically obtainable for the simple reason that if it was the product of a system, it would not be random. However, if random is not available we will settle for a simulation of random, meaning a quantity that sporadically changes with no discernible pattern. This "discernible" is a very subjective criterion and much scrutiny would make the purportedly random variable even more difficult to declare "random". For my purposes in Sketchpad, I needed the variable to lack visually discernible order.

The application was the sketch on the previous post which iteratively defines a non-uniform partition of an interval into a variable number of sub-intervals. The intent was to show that the Riemann sum is a simpler concept by definition than the LRAM, MRAM, and RRAM special cases where uniformity is imposed without necessarily providing an optimal estimate. I have felt that students treat the Riemann definition, with its Δxk's and ck's as being more complicated for its generality. That's a shame.

The fascinating cognitive riddle behind my musings is that generality is simpler in essence but impossible to portray. Any representation must necessarily assign values to the parameters that define the construction. Making a series of decisions to do this will consume time and inevitably result in a construction that is not after all random.

The dynamic geometry environment entitles a construction to a sort of generality in that the construction can be observed through an apparent continuum of its parameters. Sometimes we want those parameters to vary at the whim of the observer, and other times it may be more effective to allow the user to witness the randomness that may potentially arise within a family of constructions. With the Riemann sums, a student given the opportunity to partition and calculate an estimate will quickly opt for uniformity and automation, but the simpler idea to not restrict Δxk's and ck's is more elusive.

Anyway, the function I set upon that was my first moderate success was this:
I am not entirely certain that a similar construction would even provide a uniform random variable, but it is sporadic and it has the range [0,1) or [0,1], I am not sure which. The inclusion of 1 relies upon the architecture and data type. This works for my purposes and it can obviously be improved but I think with a greater cost in calculating energy. For example, a greater exponent would make the mantissa more frantic for small movements of x, but my own application would not be appreciably improved. Here I will end my musings with the observation that "The Frantic Mantissas" would be an excellent name for a band.


  1. This and your other tricks are fascinating. I'm a GSP novice who hopes to get up to some form of reasonable speed this year. Can you tell me about your pseudo-random function? Is x in effect a "seed" -- as it's typically called in computer programming? What do you put in x? Is there no way to access the computer time in GSP (the usual way you seed a random function)? Thanks.

  2. The function I made is probably not the best possible, but it worked for my purposes and when I tried to think of ways to improve it I realized that I couldn't identify a practical weakness. There is a problem that the function is mostly continuous if x were continuous, but since x moves by pixel increments, it jumps around satisfactorily.

    I don't think you can access clock time for a seed in GSP.