Re: easy question about random numbers

*To*: mathgroup at smc.vnet.net*Subject*: [mg53392] Re: [mg53382] easy question about random numbers*From*: Bob Hanlon <hanlonr at cox.net>*Date*: Sun, 9 Jan 2005 23:03:46 -0500 (EST)*Reply-to*: hanlonr at cox.net*Sender*: owner-wri-mathgroup at wolfram.com

li2={1/6,1/6,1/6,1/6,9/60,11/60}; li3=FoldList[Plus,0,li2]; drng[] := Module[{x=Random[]},Count[li3,_?(#<x&)]]; data=Table[drng[],{10000}]; (Count[data,#]&/@Range[6])/Length[data]//N {0.1609,0.1703,0.1653,0.1659,0.1511,0.1865} (Plus@@%)==1 True Round[60*#]/60&/@%% {1/6, 1/6, 1/6, 1/6, 3/20, 11/60} Bob Hanlon > > From: Pedrito <pedrito6 at softhome.net> To: mathgroup at smc.vnet.net > Date: 2005/01/08 Sat PM 11:02:44 EST > To: mathgroup at smc.vnet.net > Subject: [mg53392] [mg53382] easy question about random numbers > > Hi everybody! > > I wanted to obtain a discrete random number generator that I needed for > a project. > > On the library Statistics`DiscreteDistributions` I could find the DiscreteUniformDistribution > function. But I wanted to specify the probability for each one of the > states. > > > For instance: > If we need to simulate an unfair dice, we could have this probabilities > for each one of the sides: > {1/6, 1/6, 1/6, 1/6, 9/60, 11/60} > > So I wrote: > li2 = {1/6, 1/6, 1/6, 1/6, 9/60, 11/60} > li3=FoldList[Plus,0,li2] > Module[{i = 1, r = Random[]}, While[ !li3[[i]] < r < li3[[i + 1]], i++]; i] > > It works ok but I don't know if there is another (better) way of doing > this. > Any suggestion? > >