"be consistent" PerlMonks

### Re^2: Boolean math: Fill in the blanks.

by BrowserUk (Pope)
 on Oct 12, 2008 at 08:25 UTC ( #716662=note: print w/replies, xml ) Need Help??

in reply to Re: Boolean math: Fill in the blanks.
in thread Boolean math: Fill in the blanks.

Conclusion: ... I see some inconsistent results ... 7 of ( R & R | R & R ) & R evaluates to 5 bits set on average.

If you plug ( R & R | R & R ) & R into the OP code and run it a few times, you'll see that the average does approximate 7:

```C:\test>booleanBuk -N=1e2
7.02

C:\test>booleanBuk -N=1e2
6.88

C:\test>booleanBuk -N=1e2
7.06

C:\test>booleanBuk -N=1e2
7.06

C:\test>booleanBuk -N=1e2
6.92

C:\test>booleanBuk -N=1e2
7.08

And as you increase the number of iterations, the more closely the observations coincide with the theoretical value:

```C:\test>booleanBuk -N=1e5
7.00138

C:\test>booleanBuk -N=1e5
6.98986

C:\test>booleanBuk -N=1e5
6.99812

C:\test>booleanBuk -N=1e5
7.00729

C:\test>booleanBuk -N=1e6
6.994402

C:\test>booleanBuk -N=1e6
7.002038

That's how I like my proofs. Tangible :)

Sorry if I have misunderstood your hypothesis.

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

Replies are listed 'Best First'.
Re^3: Boolean math: Fill in the blanks.
by repellent (Priest) on Oct 12, 2008 at 16:54 UTC
But plug in
(( R & R ) | R ) & R & R

into the OP code and it tends towards 5, which was how I was interpreting the expression:
( R & R | R & R ) & R

My mistake. Perl evaluates ( R & R | R & R ) & R as ( (R & R) | (R & R) ) & R and that, according to my hypothesis, results in 7 bits set on average.

Create A New User
Node Status?
node history
Node Type: note [id://716662]
help
Chatterbox?
 [Corion]: I've also found some interesting invariants that I have to think/write about more. A simple rate limiter will never change the order of the input, while a limiter that allows for parallel execution will change the order. But my API currently allows for bo [Corion]: ... for both, and I'm not sure if I want to add the cruft from the parallel API (a token that you need to hold on to while you hold the lock) to the rate limiting API too, to allow seamless up/downgrades, or not. [Corion]: Also, rate limiting will look great with await: my \$token = await \$limiter-> limit(\$hostname); instead of my \$f = \$limiter->limit( \$hostname )->then(sub { my( \$token)=@_; ... });

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (7)
As of 2017-10-23 08:27 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
My fridge is mostly full of:

Results (277 votes). Check out past polls.

Notices?