Never use OS.rand with mod as it is known to give a very poor distribution
(try it out)! Use div with the help of OS.randLimits instead!

Christian

--
Christian Schulte, http://www.imit.kth.se/~schulte/ 

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Raphael Collet
Sent: Monday, September 05, 2005 8:48 AM
To: [EMAIL PROTECTED]
Subject: Re: Random Bitstrings and XORing them


Urban Hafner wrote:
> Hej,
> I need to create random bits and XOR them together. For creating 
> random numbers there is OS.rand so I at first figured I'd use that and 
> then use and xor function on them. But there doesn't seem to be such a 
> function.
> 
> Then I thought I could use BitStrings. There is a bitwise or for 
> bitstrings, but I don't know if it is exclusive or inclusive. And then 
> there is the problem with generating random bitstrings.

BitString.disj implements inclusive or.  Another undocumented feature is 
that indices start at 0 (stupid choice IMHO).

Here is an idea for generating random bitstring.  I assume that digits 0 
and 1 have same probability.  I determine the indices of digits 1 in the 
bitstring by filtering the list of indices, randomly choosing to keep 
them or not.

Cheers,
raph


%% returns true or false (each with probability .5)
fun {RandomCond _} {OS.rand} mod 2 > 0 end

%% returns a random bitstring of length I
fun {RandomBitString I}
    {BitString.make I {Filter {List.number 0 I-1 1} RandomCond}} end

%% bitwise XOR between bitstrings
fun {BitwiseXOR BS1 BS2}
    %% a xor b == (a and (not b)) or ((not a) and b)
    {BitString.disj
     {BitString.conj BS1 {BitString.nega BS2}}
     {BitString.conj {BitString.nega BS1} BS2}}
end

____________________________________________________________________________
_____
mozart-users mailing list
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users


_________________________________________________________________________________
mozart-users mailing list                               
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users

Reply via email to