MathGroup Archive 2013

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Testing a random integer generator

  • To: mathgroup at smc.vnet.net
  • Subject: [mg130396] Re: Testing a random integer generator
  • From: Peter Pein <petsie at dordos.net>
  • Date: Mon, 8 Apr 2013 00:06:36 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-newout@smc.vnet.net
  • Delivered-to: mathgroup-newsend@smc.vnet.net
  • References: <kjqjln$37o$1@smc.vnet.net>

Am 07.04.2013 03:55, schrieb Clif McInnis:
> I am trying to test the random integer generator in a program to make sure
> that it gives the type of output that I am looking for. I expect it to generate (p<>q)<10 slightly less than 1/8 of the time and (p=q)<10 slightly more than 1/8 of the time, 9<(p<>q)<20 slightly less than 3/8 of the time, and 9<(p=q)<20 slightly more than 3/8 of the time. Regardless of my expectations I would like to see how the numbers actually come out, and to that end was attempting to test the test the code, but I can not get it to generate (print) any numbers. I am sure that I have made an error somewhere in the code, but I can not find it and am not getting any error messages. Thank you for any and all help.
>
> Clif McInnis
>
>
> Initialization :> ({x = 0, p = 0, q = 0})
> While[x < 100, {
>    Clear[p, q],
>    q = RandomInteger[{1, 4}], If[q < 4,
>     {p = RandomInteger[{10, 20}],
>      q = RandomInteger[],
>      If[q == 1, q = p, q = RandomInteger[{10, 20}]]}, {p = RandomInteger[{1, 9}],
>      q = RandomInteger[],
>      If[q == 1, q = p, q = RandomInteger[{1, 9}]]}], Print[p],
>    Print[q]}; x++]
>

I've got another one that generates the pairs very fast:

With[{disttbl =
     MapAt[TransformedDistribution[{x, x}, x \[Distributed] #] &,
      DiscreteUniformDistribution /@
       Flatten[Table[
         Flatten[Table[d, {d, {{1, 9}, {10, 20}}}, {n}], 2 - n],
           {n, 2}], 1],
      {{1}, {2}}]},
   thedist = MixtureDistribution[{1, 3, 1, 3}, disttbl]];

rndPairs[n_] := Round@RandomVariate[thedist, n];

the "Round" is necessary because TransformedDistribution returns inexact 
numbers (bug or feature?).

Have fun,
  Peter



  • Prev by Date: Re: Testing a random integer generator
  • Next by Date: Re: Not-understandable warning
  • Previous by thread: Re: Testing a random integer generator
  • Next by thread: Re: Testing a random integer generator