User Tips: Making Quick, Random Decisions in an ASP Page
There are certain times when you'd like an ASP script to randomly choose to do one of N
tasks. One can use the Randomize statement and the Rnd function
in VBScript to select a random number. In fact, this is the only way to generate truly
random numbers. But sometimes generating a purely random number isn't that important, you
would just like to do 1 of N things, where each of the N events are equally probable.
For examle, on the 4GuysFromRolla.com homepage I have a space reserved to
place a link to one of my two books: Designing Active
Server Pages and Sams Teach Yourself ASP 3.0 in 21 Days.
I wanted to randomly have each book displayed... however, I am not too concerned about
true randomness and am more interested in having each book shown with equal probability.
It struck me that a very easy thing to do would be to determine the current time (using
the Time function), grab the seconds (using the Second function)
and then Mod 2 the result. The Mod
operator is used like:
dividing Number1 and Number2 and returning the
remainder. Here is a simple chart of Mod values:
| Mod Values |
Number1 | Number2 |
Number1 Mod Number2 |
| 5 | 5 | 0 |
| 6 | 5 | 1 |
| 7 | 5 | 2 |
| 8 | 5 | 3 |
| 9 | 5 | 4 |
| 10 | 5 | 0 |
| 6 | 6 | 0 |
| 7 | 6 | 1 |
| 8 | 6 | 2 |
| 9 | 6 | 3 |
| 10 | 6 | 4 |
| 7 | 7 | 0 |
| 8 | 7 | 1 |
| 9 | 7 | 2 |
| 10 | 7 | 3 |
| 8 | 8 | 0 |
| 9 | 8 | 1 |
| 10 | 8 | 2 |
| 9 | 9 | 0 |
| 10 | 9 | 1 |
| 10 | 10 | 0 |
So, to give two events the same probability, I simply did:
Dim iEventID
iEventID = Second(Time) Mod 2
'At this point iEventID will equal 0 or 1
If iEventID = 0 then
'do event 0
Else 'iEventID == 1
'do event 1
End If
|
That's all there is to it! A quick and dirty way to act on one of two events with equal
probability!
| Is that Number Even or Odd? |
The Mod operator can be used to quickly determine if a number is even
or odd! Assume we have some integer value, iVal. If iVal Mod 2 = 0
then iVal is even; if, on the other hand, iVal Mod 2 = 1, then
iVal is odd!
|
Happy Programming!