Searching \ for '[PIC] Random sequence' in subject line. ()
Make payments with PayPal - it's fast, free and secure! Help us get a faster server
FAQ page: www.piclist.com/techref/microchip/math/index.htm?key=random
Search entire site for: 'Random sequence'.

Exact match. Not showing close matches.
PICList Thread
'[PIC] Random sequence'
2002\08\12@205432 by Jinx

face picon face
> I¹m doing led dies

As someone else suggested a fast-running clock will give you
random output on the dice. I've seen a couple of electronic
dice projects in magazines that do it this way. The dice are
driven 1 - 6 at high speed (no micro, just an oscillator) and it's
purely chance what number is showing when you push a button

However, you did also ask about external input. I've had to do this
very recently to generate large random numbers and used white
noise

http://home.clear.net.nz/pages/joecolquitt/white_noise.html

This little snippet of code may not make a lot of sense out of context
but what it basically does is to read the timer low byte after a random
delay (caused by noise transitions on a port pin). The timer low byte
read after this delay then becomes the random number used in the
rest of the code. It appears so far to produce unpredictable randomness

I'm pretty sure you don't need to go to these lengths as you're dealing
with a restricted range of numbers

;============================================

rndlo call    noise
         movf    tmr1l,w       ;get timer low byte after random delay
         movwf   lo

        btfss   high_eqlm    ;test addlow if hi=cnt2
        goto    rnd_th           ;else keep it

        movlw   0x01           ;comparison for range limit
        addwf   cnt1,w
        subwf   lo,w
        btfsc   carry
        goto    rndlo            ;re-generate until lo < cnt1+1

.......  rest of code
;-----------

noise movf   tmr1l,w       ;loop anywhere from 0x08 to 0x17 times
         andlw  0x0f
         addlw  0x08
         movwf  index
t_rnd btfss  noise         ;count noise L > H > L transitions
         goto   $-1
         nop
         btfsc  noise
         goto   $-1
         decfsz index,f
         goto   t_rnd
         return

--
http://www.piclist.com hint: The PICList is archived three different
ways.  See http://www.piclist.com/#archives for details.


2002\08\12@230736 by Dave Gomez

flavicon
face
Jinx,
   looks good, may not need it now, but will probably try it anyways.
Learing is good, it'll give me practice.  I'll try a hardware & software
solution, and see which I like better.

Thanks,
dave

On 8/12/02 5:54 PM, "Jinx" <spam_OUTjoecolquittTakeThisOuTspamCLEAR.NET.NZ> wrote:

{Quote hidden}

--
http://www.piclist.com hint: The PICList is archived three different
ways.  See http://www.piclist.com/#archives for details.


2002\08\12@235436 by Jinx

face picon face
> looks good, may not need it now, but will probably try it anyways.

Note that the op amps are running off +/- 8V, which I had
available from a MAX232 in the circuit. The output has
around +/-6V swing (hence the diodes to clip it). You
shouldn't have too much difficulty getting it to go using a
5V rail to get noise that covers the PIC pin's thresholds. I
chose not to square up the noise before the PIC saw it as
the variable rise times are not undesirable

--
http://www.piclist.com hint: The PICList is archived three different
ways.  See http://www.piclist.com/#archives for details.


2002\08\13@122838 by Brendan Moran

flavicon
face
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I'm sorry, I just have to. :o)  Has anyone considered making
normalized dice?

The problem with truely random dice is that it can make certain games
boring.  For instance:  playing Risk, some of my friends and I have
discovered that we will occasionally get on streaks of really bad
rolling, where we should have little or no resistance to our force,
yet our 30 some armies get devastated by no more than 7 enemy armies.

So, one of my friends, who is a computer scientist came up with the
idea to make dice that biased, not completely altered, but biased the
roll such that there was not equal probability of hitting any number
after the first roll.  Instead there was a weighting towards numbers
which had been rolled less often.

Anyway, making a random number to sort with is not too difficult.
It's the making a weighting system without to heavily or too lightly
biasing the dice that's the problem.  Since this principle doesn't
conform to natural law, there is no predefined formula set that can
be used for this.

So, does anyone see how to do this easily?

- --Brendan

{Quote hidden}

rest of the code. It appears so far to produce unpredictable
randomness

-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 6.5.8 for non-commercial use <http://www.pgp.com>

iQA/AwUBPVkzYAVk8xtQuK+BEQKqdwCgqyqcgk81nEZY3y0T/cKKoBMVdPEAoJPh
AclxNbFoM7ON+eQhRQxNCaXx
=m4iB
-----END PGP SIGNATURE-----

--
http://www.piclist.com#nomail Going offline? Don't AutoReply us!
email .....listservKILLspamspam@spam@mitvma.mit.edu with SET PICList DIGEST in the body


2002\08\13@130444 by Robert A. LaBudde

flavicon
face
At 09:27 AM 8/13/02 -0700, Brian wrote:
>I'm sorry, I just have to. :o)  Has anyone considered making
>normalized dice?
>
>The problem with truely random dice is that it can make certain games
>boring.  For instance:  playing Risk, some of my friends and I have
>discovered that we will occasionally get on streaks of really bad
>rolling, where we should have little or no resistance to our force,
>yet our 30 some armies get devastated by no more than 7 enemy armies.
>
>So, one of my friends, who is a computer scientist came up with the
>idea to make dice that biased, not completely altered, but biased the
>roll such that there was not equal probability of hitting any number
>after the first roll.  Instead there was a weighting towards numbers
>which had been rolled less often.

This is called "equidistribution" or "uniformity", which is commonly
confused with "randomness", even by experts.

What does "random" mean? It means that there is zero autocorrelation to
high order, or the spectrum is near-"white". This does not require
equidistribution.

For example, the sequence {1,2,3,4,5,6,1,2,3,4,5,6,1,2,3,...} is perfectly
equidistributed, but not random.

The term "uniform random numbers" should be used to indicated the presence
of both attributes.

>Anyway, making a random number to sort with is not too difficult.
>It's the making a weighting system without to heavily or too lightly
>biasing the dice that's the problem.  Since this principle doesn't
>conform to natural law, there is no predefined formula set that can
>be used for this.
>
>So, does anyone see how to do this easily?

This type of solution is called a quasi-random sequence. It's quite easy to
do. A simple method is to just use the fractional part of k*sqrt(2),
k=1,2,3,...  Obviously this just translates into a
multiplicative-congruential generator of a type.

A better method for a PIC in assembler is to use a Hammersley sequence:

For each k=1,2,3,...

1. Express k in binary (e.g., "6" = "1100"). (This is easy on a PIC!)
2. Reflect the number to give a binary fraction (e.g., for "6" -> "0011").
(This is also easy on a PIC).
3. Express the answer as a number x in [0,1].
4. If you want a die roll from 1..6, use 6*x+1 as your value.

Very simple, but it gives equidistribution to O(1/N) and has high apparent
randomness (i.e., low autocorrelations).

By the way, this sequence of numbers is superior for any purpose to any
form of pseudorandom numbers. The equidistribution even on subsets is
asymptotically guaranteed, it gives more accurate answers in estimation
problems. It also has guaranteed low autocorrelations.

================================================================
Robert A. LaBudde, PhD, PAS, Dpl. ACAFS  e-mail: ralspamKILLspamlcfltd.com
Least Cost Formulations, Ltd.            URL: http://lcfltd.com/
824 Timberlake Drive                     Tel: 757-467-0954
Virginia Beach, VA 23464-3239            Fax: 757-467-2947

"Vere scire est per causas scire"
================================================================

--
http://www.piclist.com#nomail Going offline? Don't AutoReply us!
email .....listservKILLspamspam.....mitvma.mit.edu with SET PICList DIGEST in the body


2002\08\13@133350 by Brendan Moran

flavicon
face
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

From: "Robert A. LaBudde" <EraseMEralspam_OUTspamTakeThisOuTLCFLTD.COM>
> At 09:27 AM 8/13/02 -0700, Brian wrote:

Err... Brendan, but yeah.

{Quote hidden}

I have got to say that that is the best answer that I have ever heard
about this subject, though I am having some difficulty understanding
your algorithm.

First, does your algorithm take a random seed?  From here, it looks
like it doesn't.  Or is a random seed in this case used by forcing a
specific value as a starting point?

> 1. Express k in binary (e.g., "6" = "1100"). (This is easy on a
> PIC!)

Ok, so use the common dice numbers multiplied by 2?

> 2. Reflect the number to give a binary fraction (e.g., for "6" ->
> "0011"). (This is also easy on a PIC).

Yep

> 3. Express the answer as a number x in [0,1].

Meaning express the binary reflection of the each number as
0=<x=<1?

If so, how is this done in assembly, given that there are no
fractions available?

> 4. If you want a die roll from 1..6, use 6*x+1 as your value.

Is k then the result so that the generator feeds back into itself?
Or would that produce the very autocorrelations that we're attempting
to avoid?

Given that this algorithm seems not to look at previously selected
numbers, how is equidistribution guaranteed?

My original thought on the way to handle this was to generate a
random number from 0 to 255, then take all the possible numbers, and
give them catchment zones equaly distributed from 0 to 255.  Then,
the system would take the results and store them, and weight the
catchment zones accordingly.

Thanks for your input.

- --Brendan

-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 6.5.8 for non-commercial use <http://www.pgp.com>

iQA/AwUBPVlDAgVk8xtQuK+BEQIvfACgzgvIknFbzPZIEzshfgYwlFlh9JQAoIAG
pION6lw7QTV8Co2R4qKxy6ou
=k8zy
-----END PGP SIGNATURE-----

--
http://www.piclist.com#nomail Going offline? Don't AutoReply us!
email listservspamspam_OUTmitvma.mit.edu with SET PICList DIGEST in the body


2002\08\13@145827 by Robert A. LaBudde

flavicon
face
At 10:33 AM 8/13/02 -0700, Brendan wrote:
> > At 09:27 AM 8/13/02 -0700, Brian wrote:
>
>Err... Brendan, but yeah.

Sorry about that. My email program doesn't automatically supply the name on
reply.

{Quote hidden}

No. The downside of this sequence is that the index k of each number must
be known and maintained. Think of it as equivalent to the "seed". Each time
you take a result k->k+1.

> > 1. Express k in binary (e.g., "6" = "1100"). (This is easy on a
> > PIC!)
>
>Ok, so use the common dice numbers multiplied by 2?

No. ALL numbers on a PIC are in binary. Visual a 4-byte (or 2-byte if you
don't need many numbers out of the algorithm) integer as k. It's already
stored in binary on the PIC. E.g., k=1 => k=00000001H.

> > 2. Reflect the number to give a binary fraction (e.g., for "6" ->
> > "0011"). (This is also easy on a PIC).
>
>Yep

So k=1 becomes 10000000H.

This is the hard part of the algorithm.

> > 3. Express the answer as a number x in [0,1].
>
>Meaning express the binary reflection of the each number as
>0=<x=<1?
>
>If so, how is this done in assembly, given that there are no
>fractions available?

You simply place an imaginary binary point at the far left:
x = 0.10000000H = 0.5D.

> > 4. If you want a die roll from 1..6, use 6*x+1 as your value.
>
>Is k then the result so that the generator feeds back into itself?
>Or would that produce the very autocorrelations that we're attempting
>to avoid?

No, 6*x+1 is the result. Multiply the 4-byte x fraction by a 1-byte 6 in
binary (06H). The top byte is your die roll, and will be a value between 0
and 5. You can increment to add the "1" if you need a number between 0 and 6.

You then need to increment k so that the next time it's 1 larger than before.

>Given that this algorithm seems not to look at previously selected
>numbers, how is equidistribution guaranteed?
>
>My original thought on the way to handle this was to generate a
>random number from 0 to 255, then take all the possible numbers, and
>give them catchment zones equaly distributed from 0 to 255.  Then,
>the system would take the results and store them, and weight the
>catchment zones accordingly.

Here is a table of the first few values to make the algorithm easier to follow:

        HAMMERSLEY SEQUENCE FOR RADIX 2

Index   Binary  Reflection              Decimal Die Roll
Count                                   100
Average                         3.4
Std Dev                         1.71

1       00000001        10000000        0.50000 4
2       00000010        01000000        0.25000 2
3       00000011        11000000        0.75000 5
4       00000100        00100000        0.12500 1
5       00000101        10100000        0.62500 4
6       00000110        01100000        0.37500 3
7       00000111        11100000        0.87500 6
8       00001000        00010000        0.06250 1
9       00001001        10010000        0.56250 4
10      00001010        01010000        0.31250 2
11      00001011        11010000        0.81250 5
12      00001100        00110000        0.18750 2
13      00001101        10110000        0.68750 5
14      00001110        01110000        0.43750 3
15      00001111        11110000        0.93750 6
16      00010000        00001000        0.03125 1
17      00010001        10001000        0.53125 4
18      00010010        01001000        0.28125 2
19      00010011        11001000        0.78125 5
20      00010100        00101000        0.15625 1

If you wish, you can "randomize" the sequence by using a "random" number
for the starting index k.
================================================================
Robert A. LaBudde, PhD, PAS, Dpl. ACAFS  e-mail: @spam@ralKILLspamspamlcfltd.com
Least Cost Formulations, Ltd.            URL: http://lcfltd.com/
824 Timberlake Drive                     Tel: 757-467-0954
Virginia Beach, VA 23464-3239            Fax: 757-467-2947

"Vere scire est per causas scire"
================================================================

--
http://www.piclist.com#nomail Going offline? Don't AutoReply us!
email KILLspamlistservKILLspamspammitvma.mit.edu with SET PICList DIGEST in the body


2002\08\13@155811 by Brendan Moran

flavicon
face
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> >Err... Brendan, but yeah.
>
> Sorry about that. My email program doesn't automatically supply the
> name on reply.

No worries

> >First, does your algorithm take a random seed?  From here, it
> >looks like it doesn't.  Or is a random seed in this case used by
> >forcing a specific value as a starting point?
>
> No. The downside of this sequence is that the index k of each
> number must be known and maintained. Think of it as equivalent to
> the "seed". Each time you take a result k->k+1.

Ok.

> > > 1. Express k in binary (e.g., "6" = "1100"). (This is easy on a
> > > PIC!)
> >
> >Ok, so use the common dice numbers multiplied by 2?
>
> No. ALL numbers on a PIC are in binary. Visual a 4-byte (or 2-byte
> if you don't need many numbers out of the algorithm) integer as k.
> It's already stored in binary on the PIC. E.g., k=1 => k=00000001H.

Ok, that's what confused me.  6 is 110 in binary.  I guess that was
just a typo.

{Quote hidden}

Fair enough.  I wondered if that might be the case.

{Quote hidden}

[snip]

{Quote hidden}

Ok, makes much more sense now.

Thx alot.  When I have PIC code for this, I will post it. (I'm just
afraid of the 32*8 multiply. I'll be using a code generator for that
one :o)

- --Brendan

-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 6.5.8 for non-commercial use <http://www.pgp.com>

iQA/AwUBPVlkvQVk8xtQuK+BEQIcfQCcC/cMnjM+PYTFu4uCbaObKkmEVhQAnAhe
noFr75vPcYyYytuQKgH8BhS5
=Gcno
-----END PGP SIGNATURE-----

--
http://www.piclist.com#nomail Going offline? Don't AutoReply us!
email RemoveMElistservTakeThisOuTspammitvma.mit.edu with SET PICList DIGEST in the body


2002\08\13@180923 by Brendan Moran

flavicon
face
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> Very simple, but it gives equidistribution to O(1/N) and has high
> apparent randomness (i.e., low autocorrelations).
>
> By the way, this sequence of numbers is superior for any purpose to
> any form of pseudorandom numbers. The equidistribution even on
> subsets is asymptotically guaranteed, it gives more accurate
> answers in estimation problems. It also has guaranteed low
> autocorrelations.

I see what you mean about high equidistribution.  I wrote a program
on my good ol TI-86 to run through this algorithm, and the seperation
between the number with the highest frequency and the number with the
lowest frequency is still only 5 at most with 700 iterations, as near
as I have seen.

I have only one concern.  1 and 3 seem to get the highest number of
selections on a base of 6.

I ran the sequence from 0 to 1023, and the results at the end were
encouraging.
1:171
2:171
3:170
4:171
5:171
6:169

The average was 3.492
the standard deviation was (I think) 0.837

(I'm still not too clear on standard deviation, but I think that's
accurate.)

All of that look about right?

- --Brendan

-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 6.5.8 for non-commercial use <http://www.pgp.com>

iQA/AwUBPVmDsgVk8xtQuK+BEQKjngCfcdRDJ1eWZe+P6bZMYyLKpDF79E0Ani4t
2KNFqUeKxWbSw1/Xrj0Xs3zA
=1Ags
-----END PGP SIGNATURE-----

--
http://www.piclist.com#nomail Going offline? Don't AutoReply us!
email spamBeGonelistservspamBeGonespammitvma.mit.edu with SET PICList DIGEST in the body


2002\08\13@215912 by Dave Gomez

flavicon
face
Robert,
   Looks like I got some studying to to, I like the bent of the
equidistrubution, now to code that sucker.

Dave

On 8/13/02 3:09 PM, "Brendan Moran" <TakeThisOuTbmoranEraseMEspamspam_OUTMILLENNIUM.CA> wrote:

{Quote hidden}

--
http://www.piclist.com#nomail Going offline? Don't AutoReply us!
email listservEraseMEspam.....mitvma.mit.edu with SET PICList DIGEST in the body


2002\08\13@233244 by Robert A. LaBudde

flavicon
face
At 03:09 PM 8/13/02 -0700, Brendan wrote:
>I see what you mean about high equidistribution.  I wrote a program
>on my good ol TI-86 to run through this algorithm, and the seperation
>between the number with the highest frequency and the number with the
>lowest frequency is still only 5 at most with 700 iterations, as near
>as I have seen.
>
>I have only one concern.  1 and 3 seem to get the highest number of
>selections on a base of 6.
>
>I ran the sequence from 0 to 1023, and the results at the end were
>encouraging.
>1:171
>2:171
>3:170
>4:171
>5:171
>6:169

The theoretical average should be 3.50 and the standard deviation
6/sqrt(12) = sqrt(3) = 1.732.

>The average was 3.492
>the standard deviation was (I think) 0.837
>
>(I'm still not too clear on standard deviation, but I think that's
>accurate.)

Your standard deviation is wrong.

Compare the distribution you got this way, with what you would expect from
simple random sampling. The average number in 1024 tries is 170.7 per
number, with an expected range of [144.6,196.7]. Note how much tighter the
range was for your numbers: [169,171].

{Quote hidden}

================================================================
Robert A. LaBudde, PhD, PAS, Dpl. ACAFS  e-mail: RemoveMEralEraseMEspamEraseMElcfltd.com
Least Cost Formulations, Ltd.            URL: http://lcfltd.com/
824 Timberlake Drive                     Tel: 757-467-0954
Virginia Beach, VA 23464-3239            Fax: 757-467-2947

"Vere scire est per causas scire"
================================================================

--
http://www.piclist.com#nomail Going offline? Don't AutoReply us!
email RemoveMElistservspam_OUTspamKILLspammitvma.mit.edu with SET PICList DIGEST in the body


2002\08\13@233306 by Robert A. LaBudde

flavicon
face
At 12:57 PM 8/13/02 -0700, Brendan wrote:
>Ok, that's what confused me.  6 is 110 in binary.  I guess that was
>just a typo.

Oops!

>Thx alot.  When I have PIC code for this, I will post it. (I'm just
>afraid of the 32*8 multiply. I'll be using a code generator for that
>one :o)

How many bytes you use depends on how long you want the run length and the
resolution to be. Perhaps a 2-byte unsigned integer would be enough.

Multiplying by 6 is fairly easy: 6D = 110B (as you noted). So just shift k
left once and twice and add the two together to carry out the multiply by 6.

================================================================
Robert A. LaBudde, PhD, PAS, Dpl. ACAFS  e-mail: RemoveMEralTakeThisOuTspamspamlcfltd.com
Least Cost Formulations, Ltd.            URL: http://lcfltd.com/
824 Timberlake Drive                     Tel: 757-467-0954
Virginia Beach, VA 23464-3239            Fax: 757-467-2947

"Vere scire est per causas scire"
================================================================

--
http://www.piclist.com#nomail Going offline? Don't AutoReply us!
email EraseMElistservspamspamspamBeGonemitvma.mit.edu with SET PICList DIGEST in the body


2002\08\14@013050 by Mike Singer

picon face
I would suggest:

How to get randomly-biased dice number.

1. Associate six 8-bit registers with six dice numbers.
2. Init them with 128 values.
3. On each loop subtract 5 from  that register which
  number was hit until it reached 0, of course.
  And add 1 to other registers until they reached 255.
4. Get 16-bit Sum of the registers.
5. Get random value from 0 to the Sum.("White noise"-Jinx
  is a Guru, "Black noise"-Roman is a Master ;-) :o)
6. Summarize register values until this sum reached
  previous "The Sum". Last register's number involved
  with this summarizing is the "randomly-biased dice
  number".
7. Go to "3."

No multiplication. No 32-bit calcs. "Numbers which had
been rolled less often" are of more probability to be hit.

Mike
---
Sorry, if someone has expressed the idea, I hadn't chance
of reading the thread: summertime seaside matters.



Brendan Moran wrote:
{Quote hidden}

--
http://www.piclist.com hint: To leave the PICList
RemoveMEpiclist-unsubscribe-requestKILLspamspammitvma.mit.edu


2002\08\14@041458 by Rob Hamerling

flavicon
face
Robert A. LaBudde wrote:

{Quote hidden}

The distribution may look good, but the sequence doesn't look 'very'
random to me.  As far as I understand the algorithm: the result is
alternating between a digit in group 1..3 and a digit in group 4..6. For
example a 6 is always followed by a 1,2 or 3, never by 4,5 or another 6.
Is this 'good enough'? Not for a good casino game, I think.

Regards, Rob.

--
Rob Hamerling, Vianen, NL phone +31-347-322822
homepage: http://www.robh.nl/

--
http://www.piclist.com hint: To leave the PICList
piclist-unsubscribe-requestSTOPspamspamspam_OUTmitvma.mit.edu


2002\08\14@050712 by Brendan Moran

flavicon
face
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

At 08:34 AM 14/08/2002 +0300, you wrote:
>I would suggest:

Interestingly enough, I came up with a very similar idea a few hours prior
to seeing your post.  My friend and I are looking at a way of determining
the quality of the generator.

I'll highlight the differences

>How to get randomly-biased dice number.
>
>1. Associate six 8-bit registers with six dice numbers.
>2. Init them with 128 values.

init them with 42,42,43,43,43,43 (yes, I know that this affects the first
few rolls, but that falls off soon)

>3. On each loop subtract 5 from  that register which
>    number was hit until it reached 0, of course.
>    And add 1 to other registers until they reached 255.

Using my init values, if you subtract 6 from the selected register and add
one to all others, it will work fine, though there needs to be a test for
falling below 0.
so,
On each loop, if (the selected register minus 5) is greater than or equal
to 0, subtract 6 from the selected register, then add 1 to all registers.


>4. Get 16-bit Sum of the registers.

Here's the advantage with mine:  The sum is always 256

>5. Get random value from 0 to the Sum.("White noise"-Jinx
>    is a Guru, "Black noise"-Roman is a Master ;-) :o)

Or the keypress duration of the triggering mechanism fed through a high
speed counter, and used as the seed for a random number generator algorithm.

Only, generate a number from 0 to the sum-1

>6. Summarize register values until this sum reached
>    previous "The Sum". Last register's number involved
>    with this summarizing is the "randomly-biased dice
>    number".

This becomes unnecessary with my algorithm.

>7. Go to "3."

With the effort to evaluate the performance of the uniform random number
generator, we came up with a thought about the principles behind this
generator: there are two extremes for uniform randomness:
1. For a 6-sided die, every number must come up within 6 rolls
2. The distribution of rolls converges to uniformity as the number of rolls
approaches infinity.

The number of rolls required for a uniform distribution can be expressed as
a number dependant on a factor between 0 and 1.  Call this number x, and
the number of required rolls i.  The number of different output
possibilities shall be called n.  Thus:

i = n*1/x

but n=1 is meaningless.  As x approaces 0, n becomes insignificant.  As x
approaches 1, n becomes the dominant variable.

The two extremes are not really useful, but there is a value of x somewhere
in between that should be effective.

I think that our two algorithms are close to this ideal.

Sounds like we basically had the same idea.

{Quote hidden}

-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 6.5.8 for non-commercial use <http://www.pgp.com>

iQA/AwUBPVodNwVk8xtQuK+BEQKkkwCg3z/OT+Bu8PA62LVmEc16+PdgoDkAn23j
JaTclv/J2BJxa+1nE2QcbhBI
=PplQ
-----END PGP SIGNATURE-----

--
http://www.piclist.com hint: To leave the PICList
spamBeGonepiclist-unsubscribe-requestSTOPspamspamEraseMEmitvma.mit.edu


2002\08\14@080337 by Russell McMahon

face
flavicon
face
This may have been mentioned ..
There are many tests for "goodness of randomness" but an easy starting point
is to plot pairs of numbers on an XY scatter graph. A genuinely random
generator will of course produce an evenly distributed scatter diagram
whereas if there is a consistent correlation between adjacent numbers it
will show up on this diagram. This test will not show every form of
non-randomness BUT any variation from random that it does show will be
genuine.

       RM


{Original Message removed}

2002\08\14@130720 by Brendan Moran

flavicon
face
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> At 12:57 PM 8/13/02 -0700, Brendan wrote:
> >Ok, that's what confused me.  6 is 110 in binary.  I guess that
> >was just a typo.
>
> Oops!
>
> >Thx alot.  When I have PIC code for this, I will post it. (I'm
> >just afraid of the 32*8 multiply. I'll be using a code generator
> >for that one :o)
>
> How many bytes you use depends on how long you want the run length
> and the resolution to be. Perhaps a 2-byte unsigned integer would
> be enough.
>
> Multiplying by 6 is fairly easy: 6D = 110B (as you noted). So just
> shift k left once and twice and add the two together to carry out
> the multiply by 6.

Actually, it looks like I won't be coding this after all.  I ran a
bit of a longer test, and determined that I could predict the
sequence of numbers quite effectively, so, I am afraid that it does
have slightly higher autocorrelations than you expected.

The common sequence went 4361 or 4352 or 5261.  It was pretty simple
to guess which it would be, and I was rarely wrong, so I don't think
that this will work.  Have a look at Mike's post, and my reply.
These are far more effective systems that are based on a randomized
source, and therefore have low autocorrelations as long as the random
source is good.  The advantage is simply that they autocorrect for
the biases of the source.

- --Brendan

-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 6.5.8 for non-commercial use <http://www.pgp.com>

iQA/AwUBPVqDSQVk8xtQuK+BEQJ2KwCeIcPY8wQTXXz0PMLgqSX8H9dG0PsAn3Ry
o/sm3nlu/kGGYSYvTQdza0wG
=0LFS
-----END PGP SIGNATURE-----

--
http://www.piclist.com hint: To leave the PICList
KILLspampiclist-unsubscribe-requestspamBeGonespammitvma.mit.edu


2002\08\14@170439 by Mike Singer

picon face
part 1 4644 bytes content-type:text/plain; (decoded 7bit)

Brendan Moran wrote:
.
.
> Sounds like we basically had the same idea.
>
> >Brendan Moran wrote:
> > > Has anyone considered making normalized dice?
.
.

Brendan,
I've made just for fun a simple program in Excel XP
showing how my idea works. Attached file: Excel XP
book Russian version may not work with English Excel.
And there is a virus risk during transmission, so
I pasted code below. If someone is interested in it,
he could paste the code into Excel sheet VB module.
(Open VBA editor, click Sheet1).
It will work on activating the sheet (just open
another sheet and then return to this one).

       Mike.
----------------------



'   RE: [PIC] Random sequence
'   How to get randomly-biased dice number.
'
'   1. Associate six registers with six dice numbers.
'   2. Init them with lngRegMaxValue/2.
'   3. On each loop subtract 5 from  that register which
'      number was hit until it reached 0, of course.
'      And add 1 to other registers until they reached 255.
'   4. Get Sum of the registers.
'   5. Get random value from 1 to the Sum.
'   6. Summarize register values until this sum reached
'      previous "The Sum". Last register's number involved
'      with this summarizing is the "randomly-biased dice
'      number".
'   7. Go to "3."

Option Explicit

Private Const lngRegMaxValue  As Long = 255
Private Const lngNumberOfSteps  As Long = 1000

Private Sub Worksheet_Activate()
  Dim i As Long

   Cells.Select
   Selection.ClearContents       'Clear Worksheet
   Range("A1").Select

   SetInitialValues

   For i = 4 To lngNumberOfSteps
     RefreshRegs i
     Cells(i, 7) = GetRegSum(i)
     Cells(i, 8) = GetRndOfSum(i)
     Cells(i, 9) = GetDiceNumber(i)
     RefreshHits i
   Next i
End Sub

Private Sub SetInitialValues()

 Cells(1, 1) = "Biased Dice"

 ' Register associated with the Dice number 1
 Cells(2, 1) = "Reg1"
 ' Register associated with the Dice number 2
 Cells(2, 2) = "Reg2"
 ' Register associated with the Dice number 3
 Cells(2, 3) = "Reg3"
 ' Register associated with the Dice number 4
 Cells(2, 4) = "Reg4"
 ' Register associated with the Dice number 5
 Cells(2, 5) = "Reg5"
 ' Register associated with the Dice number 6
 Cells(2, 6) = "Reg6"
 ' Sum of the previous six cells
 Cells(2, 7) = "RegSum"
 ' Random value from 1 to previous cell value
 Cells(2, 8) = "RndOfSum"
 ' Dice number that was hitted
 Cells(2, 9) = "Dice"
 ' Number of hitts of the Dice number 1
 Cells(2, 10) = "HitsD1"
 ' Number of hitts of the Dice number 2
 Cells(2, 11) = "HitsD2"
 ' Number of hitts of the Dice number 3
 Cells(2, 12) = "HitsD3"
 ' Number of hitts of the Dice number 4
 Cells(2, 13) = "HitsD4"
 ' Number of hitts of the Dice number 5
 Cells(2, 14) = "HitsD5"
 ' Number of hitts of the Dice number 6
 Cells(2, 15) = "HitsD6"

 Cells(3, 1) = Int(lngRegMaxValue / 2) + 1
 Cells(3, 2) = Cells(3, 1)
 Cells(3, 3) = Cells(3, 1)
 Cells(3, 4) = Cells(3, 1)
 Cells(3, 5) = Cells(3, 1)
 Cells(3, 6) = Cells(3, 1)
 Cells(3, 7) = GetRegSum(3)
 Cells(3, 8) = GetRndOfSum(3)
 Cells(3, 9) = GetDiceNumber(3)
 RefreshHits 3
End Sub

Private Function GetRegSum( _
  lngRow As Long) As Long
  Dim i As Long
  For i = 1 To 6
     GetRegSum = GetRegSum + Cells(lngRow, i)
  Next i
End Function


Private Function GetRndOfSum( _
  lngRow As Long) As Long
  GetRndOfSum = Int(Rnd * Cells(lngRow, 7)) + 1
End Function

Private Function GetDiceNumber( _
  lngRow As Long) As Long
  Dim i As Long, lngTmpSum As Long

  For i = 1 To 6
     lngTmpSum = lngTmpSum + Cells(lngRow, i)
     If lngTmpSum >= Cells(lngRow, 8) Then
        GetDiceNumber = i
        Exit Function
     End If
  Next i
End Function

Private Sub RefreshRegs(lngRow As Long)
  Dim i As Long

  For i = 1 To 6
     If i = Cells(lngRow - 1, 9) Then
        Cells(lngRow, i) = Cells(lngRow - 1, i) - 5
        If Cells(lngRow, i) < 0 Then Cells(lngRow, i) = 0
     Else
        Cells(lngRow, i) = Cells(lngRow - 1, i) + 1
        If Cells(lngRow, i) > lngRegMaxValue Then
           Cells(lngRow, i) = lngRegMaxValue
        End If
     End If
  Next i
End Sub

Private Sub RefreshHits(lngRow As Long)
  Dim i As Long

  For i = 1 To 6
     Cells(lngRow, 9 + i) = Val(Cells(lngRow - 1, 9 + i))
  Next i

  Cells(lngRow, 9 + Cells(lngRow, 9)) = _
     Cells(lngRow, 9 + Cells(lngRow, 9)) + 1
End Sub




part 2 12646 bytes content-type:application/x-compressed; (decode)

part 3 105 bytes
--
http://www.piclist.com hint: To leave the PICList
EraseMEpiclist-unsubscribe-requestspamEraseMEmitvma.mit.edu


2002\08\14@175553 by Brendan Moran

flavicon
face
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> Brendan Moran wrote:
> .
> .
> > Sounds like we basically had the same idea.

>  Brendan,
>  I've made just for fun a simple program in Excel XP
> showing how my idea works. Attached file: Excel XP
> book Russian version may not work with English Excel.
> And there is a virus risk during transmission, so
> I pasted code below. If someone is interested in it,
> he could paste the code into Excel sheet VB module.
> (Open VBA editor, click Sheet1).
>  It will work on activating the sheet (just open
> another sheet and then return to this one).

Looks great, mike, but try setting the initial bias values to
42,42,42,43,43,43
I think you'll find that the result is having code that fits better
in a PIC.  Those bias values will always sum to 255.

Like I said, similar ideas, only mine was designed with 8-bit math in
mind.  I could run it on a 12C device, which is a great benefit.

- --Brendan

-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 6.5.8 for non-commercial use <http://www.pgp.com>

iQA/AwUBPVrREwVk8xtQuK+BEQL90ACgkP2oowv6B+InRUeL2AJKqm6pVVEAnRCd
Ms73DPuibLIRyzCebAU0gisV
=MeOz
-----END PGP SIGNATURE-----

--
http://www.piclist.com hint: To leave the PICList
@spam@piclist-unsubscribe-request@spam@spamspam_OUTmitvma.mit.edu


2002\08\14@180755 by Brendan Moran

flavicon
face
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> Like I said, similar ideas, only mine was designed with 8-bit math
> in mind.  I could run it on a 12C device, which is a great benefit.

Just noticed how ambiguous that looks, it's easy to confuse I2C with
12C.  Make that a 12C50X device.  As in 8-pin MCU.

- --Brendan

-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 6.5.8 for non-commercial use <http://www.pgp.com>

iQA/AwUBPVrUuQVk8xtQuK+BEQLMCwCdGIHOqDH1ihVLbxorW8FBa0UhZU0AoI90
mRL1N4stgSfkKkSYPoIX6s0R
=t/Jm
-----END PGP SIGNATURE-----

--
http://www.piclist.com hint: To leave the PICList
spamBeGonepiclist-unsubscribe-requestspamKILLspammitvma.mit.edu


2002\08\15@074449 by Mike Singer

picon face
Brendan Moran wrote:
>
> Looks great, mike, but try setting the initial bias
> values to 42,42,42,43,43,43
> I think you'll find that the result is having code
> that fits better in a PIC.  Those bias values will
> always sum to 255.
>
> Like I said, similar ideas, only mine was designed
> with 8-bit math in mind.  I could run it on a 12C
> device, which is a great benefit.

Brendan,
I can't believe you have no one spare register to
hold 16 bit sum. And is it a big trouble to add
six 8-bit registers into 16-bit two registers value
using carry bit for example? Are these 12CXXX so weak?
I tried 42...43; the result is too predictable.

Mike.

--
http://www.piclist.com hint: PICList Posts must start with ONE topic:
[PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads


2002\08\15@131755 by Brendan Moran

flavicon
face
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Mike,

I have to thank you for this.  It helped me figure out the
correlation between the uniformity factor that I called x (which I
will be renaming in this post to u (don't worry I'll mark it
clearly)).

{Quote hidden}

You're right, mike, it's not a big deal to use one more register.
It's just a little nicer to not use that extra one, it's just a
little easier to do, and if I were to attempt to put this on a
PIC12C50X, all the space I can save counts ;)

> And is it a big trouble to add
> six 8-bit registers into 16-bit two registers value
> using carry bit for example?

I know how to do a 16-bit add.  It's not difficult.  It's just that
it adds that one more level of complexity.

> Are these 12CXXX so weak?

I have heard many people say that the PIC12CXXX are amazing little
controllers.  But for all that, the code size limitation is there.
They have close to the same instruction set as the PIC16F series (a
few differences)

>  I tried 42...43; the result is too predictable.

Fair enough, I'll accept that.  But I would like to know if you
tested your random number generator's randomness first, and if so,
how did you test it, and how you define "good enough".

Now, with that little criticism (sorry 'bout that) I will say that
you're probably right.  That would, I expect, produce a result that
is too predictable.  I can see how that would happen.

But, thanks to you, I finally have figured out how to correlate the
expression that I wrote a few days ago with the algorithm that we
both came up with (independantly, mind you, and with different bias
values).

I wrote:
{Quote hidden}

So, now to correlate that with what I think I may know (o; about the
way that this algorithm works.

The weigtings can be defined as:

w1,w2,w3,...wn

The sum is, of course:

w1+w2+w3+...+wn

And initial conditions dictate that

w1 = w2 = w3 = ... = wn

(accounting, of course, for fractional parts which are not allowable
in our circumstances)
So, the best answer that I can come up with is this:

That the number of rolls required for a uniform distribution is, in
fact, also the initial weighting of one number, so that:

wn = n*1/u

sum = n*wn
sum = n^2/u

And the algortihm should be revised to read that if a number does not
have a weighting of n-1 or more, it cannot be selected, and the
random number must be regenerated.

And, I think that about wraps it up.

Once again, thanks, Mike, and saying that my weightings produced a
result that was too uniform is a valid point.

- --Brendan

-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 6.5.8 for non-commercial use <http://www.pgp.com>

iQA/AwUBPVviFgVk8xtQuK+BEQJndgCfbomKNsN4uz0dTFl5o9deHD+f7/kAoLkN
iv89ZVN7OvHGDFjLVSPwC5kn
=8slE
-----END PGP SIGNATURE-----

--
http://www.piclist.com hint: PICList Posts must start with ONE topic:
[PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads


2002\08\15@153417 by Mike Singer

picon face
Brendan Moran wrote:
> I have to thank you for this.  It helped me figure out the ...
.
> You're right, mike,...
.
> I'll accept that...
.
> Now, with that little criticism (sorry 'bout that) I will say that
> you're probably right...
.
> But, thanks to you, I finally have figured out how to ...
.
> Once again, thanks, Mike, and saying that my weightings produced a
> result that was too uniform is a valid point...



Thanks Brendan, but I'm fully perplexed with the amount
Of your " thanks". I can't handle this style of postings.
I've got into the habit to communicate in Olin's and even
more aggressive manner.


> But I would like to know if you tested your random
> number generator's randomness first, and if so,
> how did you test it, and how you define "good enough".

I'll think and reply this question later.

Mike.

--
http://www.piclist.com hint: PICList Posts must start with ONE topic:
[PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads


2002\08\19@091223 by Mike Singer

picon face
Brendan,
I beg your pardon, I can't concentrate myself on all
these "uniformity" questions now.
I've slightly modified VB example. If someone want to
run it, he could paste the code into Excel sheet
VB module. (Open VBA editor, click Sheet1). It will
work on activating the sheet (just open another sheet
and then return to this one). Folks I really need
your feedback(I like hotter :-)
About correlation between "uniformity" and initial
registers' values: qualitative assessment is obvious:
The more initial values - the more randomness (less
uniformity) since relative difference between registers
will be smaller. When uniformity or randomness are
" good enough " -I don't know, it depends upon applications.
Maybe experimental way is better then trying to formalize
the problem. As for me, I can't even recall now all these
abstract math words to do it.
As James Newton wrote: "In fact, I've been spending
a lot of time thinking about why this (PBK) project
bothers me so much and others have not....". I'm thinking
about it too. I can't make myself not to post one more
message on this topic. I've some ideas, constructive, I
hope.

Mike.

---------------------------------------------------------



'   RE: [PIC] Random sequence
'   How to get randomly-biased dice number (08-19-2002).
'
'   1. Associate six registers with six dice numbers.
'   2. Init them with lngReg1InitValue...lngReg6InitValues
'        respectively.
'   3. On each loop subtract 5 from the register which
'      number was hit.
'      And add 1 to other registers.
'      If values < 1 or > lngRegMaxValue were reached -
'       discard this cast (shadow this row in the Excel sheet).
'   4. Get Sum of the registers.
'   5. Get random value from 1 to the Sum.
'   6. Summarize register values until this sum reached
'      previous "The Sum". Last register's number involved
'      with this summarizing is the "randomly-biased dice
'      number".
'   7. Go to "3."

Option Explicit

Private Const lngRegMaxValue  As Long = 1000
Private Const lngReg1InitValue  As Long = 15
Private Const lngReg2InitValue  As Long = 15
Private Const lngReg3InitValue  As Long = 15
Private Const lngReg4InitValue  As Long = 15
Private Const lngReg5InitValue  As Long = 15
Private Const lngReg6InitValue  As Long = 15

Private Const lngNumberOfSteps  As Long = 1000

Private lngLastNonDiscardedRow As Long

Private Sub Worksheet_Activate()
  Dim i As Long

   Cells.Select
   Selection.Delete Shift:=xlUp       'Clear Worksheet
   Range("A1").Select

   SetInitialValues

   For i = 4 To lngNumberOfSteps
     RefreshRegs i
     Cells(i, 7) = GetRegSum(i)
     Cells(i, 8) = GetRndOfSum(i)
     Cells(i, 9) = GetDiceNumber(i)
     RefreshHits i
     DiscardRowIfBeyondTheBounds (i)
   Next i
End Sub

Private Sub SetInitialValues()

 lngLastNonDiscardedRow = 3

 Cells(1, 1) = "Biased Dice"

 ' Registers associated with the Dice numbers 1...6
 Cells(2, 1) = "Reg1"
 Cells(2, 2) = "Reg2"
 Cells(2, 3) = "Reg3"
 Cells(2, 4) = "Reg4"
 Cells(2, 5) = "Reg5"
 Cells(2, 6) = "Reg6"

 ' Sum of the previous six cells
 Cells(2, 7) = "RegSum"

 ' Random value from 1 to previous cell value
 Cells(2, 8) = "RndOfSum"

 ' Dice number that was hitted
 Cells(2, 9) = "Dice"

 ' Numbers of hitts of the Dice numbers 1...6
 Cells(2, 10) = "HitsD1"
 Cells(2, 11) = "HitsD2"
 Cells(2, 12) = "HitsD3"
 Cells(2, 13) = "HitsD4"
 Cells(2, 14) = "HitsD5"
 Cells(2, 15) = "HitsD6"

 ' Place init values
 Cells(3, 1) = lngReg1InitValue
 Cells(3, 2) = lngReg2InitValue
 Cells(3, 3) = lngReg3InitValue
 Cells(3, 4) = lngReg4InitValue
 Cells(3, 5) = lngReg5InitValue
 Cells(3, 6) = lngReg6InitValue

 Cells(3, 7) = GetRegSum(3)
 Cells(3, 8) = GetRndOfSum(3)
 Cells(3, 9) = GetDiceNumber(3)

 RefreshHits 3
End Sub

Private Function GetRegSum( _
  lngRow As Long) As Long
  Dim i As Long
  For i = 1 To 6
     GetRegSum = GetRegSum + Cells(lngRow, i)
  Next i
End Function

Private Function GetRndOfSum( _
  lngRow As Long) As Long
  GetRndOfSum = Int(Rnd * Cells(lngRow, 7)) + 1
End Function

Private Function GetDiceNumber( _
  lngRow As Long) As Long
  Dim i As Long, lngTmpSum As Long

  For i = 1 To 6
     lngTmpSum = lngTmpSum + Cells(lngRow, i)
     If lngTmpSum >= Cells(lngRow, 8) Then
        GetDiceNumber = i
        Exit Function
     End If
  Next i
End Function

Private Sub RefreshRegs(lngRow As Long)
  Dim i As Long

  For i = 1 To 6
     If i = Cells(lngRow - 1, 9) Then
        Cells(lngRow, i) = Cells(lngLastNonDiscardedRow, i) - 5
     Else
        Cells(lngRow, i) = Cells(lngLastNonDiscardedRow, i) + 1
     End If
  Next i
End Sub

Private Sub DiscardRowIfBeyondTheBounds( _
  lngRow As Long)
  Dim i As Long

  For i = 1 To 6
     If Cells(lngRow, i) < 1 Or Cells(lngRow, i) > lngRegMaxValue Then
        Rows(lngRow).Interior.ColorIndex = 15
        Cells(lngRow, i).Font.ColorIndex = 2
        Cells(lngRow, i).Interior.ColorIndex = 3
        Cells(lngRow, 16) = "Discarded"
        Exit Sub
     End If
  Next i
  lngLastNonDiscardedRow = lngRow
End Sub

Private Sub RefreshHits(lngRow As Long)
  Dim i As Long

  For i = 1 To 6
     Cells(lngRow, 9 + i) = Val(Cells(lngLastNonDiscardedRow, 9 + i))
  Next i

  Cells(lngRow, 9 + Val(Cells(lngRow - 1, 9))) = _
     Cells(lngRow, 9 + Val(Cells(lngRow - 1, 9))) + 1
End Sub



'
'
'

--
http://www.piclist.com hint: To leave the PICList
.....piclist-unsubscribe-requestspam_OUTspammitvma.mit.edu


2002\08\19@154307 by Brendan Moran

flavicon
face
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Mike,
>  I beg your pardon, I can't concentrate myself on all
> these "uniformity" questions now.

I understand, and that's fine.  I've been rapidly losing interest in
a few other threads around here, but for some reason this one
interests me.

>  I've slightly modified VB example. If someone want to
> run it, he could paste the code into Excel sheet
> VB module. (Open VBA editor, click Sheet1). It will
> work on activating the sheet (just open another sheet
> and then return to this one). Folks I really need
> your feedback(I like hotter :-)

Tried it out, and it works great.  Especially the way it discards
results that don't have a high enough rating.

>  About correlation between "uniformity" and initial
> registers' values: qualitative assessment is obvious:
> The more initial values - the more randomness (less
> uniformity) since relative difference between registers
> will be smaller.

That was the qualitative observation that I based my formula for the
relationship between the uniformity factor and the starting values
on.  It was obvious once I thought about it.

> When uniformity or randomness are
> " good enough " -I don't know, it depends upon applications.
> Maybe experimental way is better then trying to formalize
> the problem. As for me, I can't even recall now all these
> abstract math words to do it.

I can't recall them either.  But the principles still stick a bit (:
I agree, the uniformity factor should be tested for any given
situation.  What I was simply trying to validate was the relationship
that I came up with.  And I think it fits.  Your spreadsheet is a
great tool for testing this.  I was going to write a program in C++
to do this, but I don't really see any point in doing so now.

>  As James Newton wrote: "In fact, I've been spending
> a lot of time thinking about why this (PBK) project
> bothers me so much and others have not....". I'm thinking
> about it too. I can't make myself not to post one more
> message on this topic. I've some ideas, constructive, I
> hope.

Good.  Either that project needs to be pushed or quelled.  I don't
know which.  I support the sentiment, but I am neutral towards the
practicality.  If the majority like it, I'll do what I can to help
out.  If they don't, I'll probably keep commenting on various ideas
that come up...

I hope that you are keeping interest in this thread on randomness...
I think it could see a multitude of uses if we can simply finish it
up and formalize it.  And your excel sheet is a good step in the
right direction on that count.

- --Brendan

-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 6.5.8 for non-commercial use <http://www.pgp.com>

iQA/AwUBPWFKMgVk8xtQuK+BEQKSGgCg2/eniSV/pRgxK1rsmgHAw5Y09s0AoLt+
upc5+w0fZeZ6p/9+G6Ymstsy
=CBtK
-----END PGP SIGNATURE-----

--
http://www.piclist.com hint: To leave the PICList
TakeThisOuTpiclist-unsubscribe-request.....spamTakeThisOuTmitvma.mit.edu


2002\08\19@154549 by Brendan Moran

flavicon
face
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> Folks I really need
> your feedback(I like hotter :-)

Just noticed something: You're rejecting results where the weighting
would drop to 0.  I think that those are OK.  We need to drop results
that go below 0, but I think that 0 is OK.

Just my opinion... But this is, after all, a computing system, and we
all know to start counting at 0, right?

- --Brendan

-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 6.5.8 for non-commercial use <http://www.pgp.com>

iQA/AwUBPWFK/QVk8xtQuK+BEQIOqgCg3DMRnCOA43iG6dbxuocA7Xtx29wAn2y+
cTI4sw5BRZ/UVZwv7J/7mUBz
=X5B6
-----END PGP SIGNATURE-----

--
http://www.piclist.com hint: To leave the PICList
TakeThisOuTpiclist-unsubscribe-requestKILLspamspamspammitvma.mit.edu


More... (looser matching)
- Last day of these posts
- In 2002 , 2003 only
- Today
- New search...