From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00,LOTS_OF_MONEY, SUBJ_ALL_CAPS autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,81080984e3a87d27 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2001-02-21 01:00:11 PST From: "Martin Dowie" Newsgroups: comp.lang.ada References: <6Izk6.161065$Pm2.3005370@news20.bellglobal.com> Subject: Re: HOW TO FIX THIS IN ADA? Date: Wed, 21 Feb 2001 08:56:57 -0000 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.00.2314.1300 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2314.1300 NNTP-Posting-Host: superted.dsge.edinbr.gmav.gecm.com Message-ID: <3a938145$1@pull.gecm.com> X-Trace: 21 Feb 2001 08:50:13 GMT, superted.dsge.edinbr.gmav.gecm.com Path: supernews.google.com!sn-xit-02!supernews.com!news.tele.dk!193.190.198.17!newsfeeds.belnet.be!news.belnet.be!btnet-peer1!btnet-peer0!btnet-feed5!btnet!newreader.ukcore.bt.net!pull.gecm.com!superted.dsge.edinbr.gmav.gecm.com Xref: supernews.google.com comp.lang.ada:5389 Date: 2001-02-21T08:56:57+00:00 List-Id: Are you looking for someone to re-write this specific R.N.G. in Ada? If not, look up section 'A.5.2 Random Number Generation' of the language reference manual (try www.adapower.com and select 'Reference'). If someone has told you that Ada is Pascal, then you have been sadly misinformed and simply adding a Ada.Text_IO context clause isn't going to work :-) Munir Albeelbisi wrote in message news:6Izk6.161065$Pm2.3005370@news20.bellglobal.com... > with Ada.Text_IO; use Ada.Text_IO; > > PROCEDURE Random(Output) IS ; > seed1 = 5; seed2 = 10000; seed3 = 3000; > x, y, z : integer; > looop : integer; > FUNCTION Unif return real is > tmp : real; > Begin > x := 171*(x mod 177) - 2*(x div 177); > if x<0 then x := x + 30269; > y := 172*(y mod 176) -35*(y div 176); > if y<0 then y := y + 30307; > z := 170*(z mod 178) -63*(z div 178); > if z<0 then z := z + 30323; > tmp := x/30269.0 + y/30307.0 + z/30323.0; > Unif := tmp - trunc(tmp); > End; {Unif} > BEGIN > x := seed1; y := seed2; z := seed3; > for looop := 1.. 1000 loop > writeln(loop:4, ' ==> ', unif:7:5); > END loop; > END unif; > >