🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #12231

Re: random functie in C++ STL

#12231
From: Nicolas Barbier
Date: Mon, 03 Dec 2001 09:02
36 lines
2237 bytes
"Benoit Liessens" <benoit.liessens@freeweb.be> wrote:
>srand48() gebruik ik. Als ik me goed herinner geeft die een 'unsigned long'
>als random getal. Eigenlijk moet ik random karakters moet hebben uit een
>reeks van 14:
>
>unsigned long r = srand48();
>
>if r<= ULONG_MAX/ 14 return 'U';
>if r<= 2* ULONG_MAX/ 14 return 'D';
>if r<=3*ULONG_MAX/ 14 return 'R';
>
>etc ...
>
>Op 1.000.000 iteraties komen alle 14 karakters wel ong. even vaak voor. Goed
>genoeg voor mijn prog.

oeioei en als je uit een reeks van 200 zou moeten kiezen, zou je dan
200 lijnen schrijven ?
btw ik snap niet hoe dit kan werken: je doet ULONG_MAX * iets, dan
krijg je iets dat niet in een long past (misschien werkt je compiler
alles eerst in 64 bit uit voor hij code genereert)

het volgende geeft een extra voorspelbaarheid van max 14 / ULONG_MAX
die fout kan je niet vermijden (toch niet met slechts 1 oproep van
srand48()), ze komt doordat ULONG_MAX geen veelvoud is van 14, en je
hebt ze ook met jou code (maar dat valt minder op)

char a[] = "UDRXYZXYZXYZXY";
return a[r % 14];

-- 
Nicolas Barbier

String myEmail() {
  return "nicolas.barbier" + '@' + "easynet.be";
}
Technical Details
Message-ID: <3c0b3bcc.3333593@news.easynet.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!news.tele.dk!small.news.tele.dk!62.112.0.25!newsfeed.online.be!feed1.news.be.easynet.net!news.be.easynet.net!not-for-mail
References: <3bea7fad$0$12226$4d4efb8e@news.be.uu.net> <3c08eaa0$0$27955$ba620e4c@news.skynet.be> <3c09110b$0$12219$4d4efb8e@news.be.uu.net>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: fcea4,e4605bf6a9a91351
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2001-12-03 01:04:44 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!news.tele.dk!small.news.tele.dk!62.112.0.25!newsfeed.online.be!feed1.news.be.easynet.net!news.be.easynet.net!not-for-mail
From: nicolas.barbier@easynet.nospamforme.be (Nicolas Barbier)
Newsgroups: be.comp.programming
Subject: Re: random functie in C++ STL
Date: Mon, 03 Dec 2001 09:02:51 GMT
Organization: [ posted via Easynet Belgium ]
Lines: 36
Message-ID: <3c0b3bcc.3333593@news.easynet.be>
References: <3bea7fad$0$12226$4d4efb8e@news.be.uu.net> <3c08eaa0$0$27955$ba620e4c@news.skynet.be> <3c09110b$0$12219$4d4efb8e@news.be.uu.net>
NNTP-Posting-Host: 213-193-182-159.adsl.easynet.be
X-Trace: rivage.news.be.easynet.net 1007370283 13827 213.193.182.159 (3 Dec 2001 09:04:43 GMT)
X-Complaints-To: abuse@easynet.be
NNTP-Posting-Date: 3 Dec 2001 09:04:43 GMT
X-Newsreader: Forte Free Agent 1.21/32.243