[fpc-pascal] Repeat result in random

Pierre Free Pascal pierre at freepascal.org
Sun Jan 8 10:49:32 CET 2017


  Hi all,

  I finally found the location of the error,
that I introduced in revision 34320.

   It should be fixed in revision 35259.


Pierre

PS: Explanation for those interested:

  Indeed this is my fault,
the incrementation of global variable mt_index was
done after the 'if ...=MTWIST_N branch..
before my commit.

  The whole point of the commit was to 
have a very close setting of l_index and incrementation
of mt_index directly after, and to only use 
the local variable l_index afterwards inside the function
to minize adverse effects of multi-threaded code.

  

> -----Message d'origine-----
> De : fpc-pascal-bounces at lists.freepascal.org [mailto:fpc-pascal-
> bounces at lists.freepascal.org] De la part de Tony
> Envoyé : samedi 26 novembre 2016 16:26
> À : FPC-Pascal users discussions
> Objet : [fpc-pascal] Repeat result in random
> 
> Here is a short program to print 10 random numbers:
> 
> program testrandom;
> 
> var
>   i: Integer;
> 
> begin
>   Randomize;
> 
>   for i := 1 to 10 do
>     WriteLn(Random);
> end.
> 
> 
> If I compile and run this program using FPC 3.0.0 on Ubuntu 16.04
> x86_64 I get the following:
> 
> $ /usr/lib/fpc/3.0.0/ppcx64 testrandom
> Free Pascal Compiler version 3.0.0+dfsg-2 [2016/01/28] for x86_64
> Copyright (c) 1993-2015 by Florian Klaempfl and others
> Target OS: Linux for x86-64
> Compiling testrandom.pp
> Linking testrandom
> /usr/bin/ld.bfd: warning: link.res contains output sections; did you
> forget -T? 14 lines compiled, 0.1 sec
> $ ./testrandom
>  9.34558931970968842506E-0001
>  7.37956080120056867599E-0001
>  9.57959748106077313423E-0001
>  8.50854847114533185959E-0001
>  1.81509985821321606636E-0001
>  6.14049500785768032074E-0001
>  9.82306003570556640625E-0002
>  3.28659117221832275391E-0001
>  3.45761539181694388390E-0001
>  6.87781326007097959518E-0001
> 
> All well and good.  However, if I compile using FPC 3.1.1 from svn I
> get the following:
> 
> $ /usr/local/lib/fpc/3.1.1/ppcx64 testrandom
> Free Pascal Compiler version 3.1.1 [2016/11/26] for x86_64
> Copyright (c) 1993-2016 by Florian Klaempfl and others
> Target OS: Linux for x86-64
> Compiling testrandom.pp
> Linking testrandom
> 14 lines compiled, 0.1 sec
> $ ./testrandom
>  3.31493919249624013901E-0001
>  3.31493919249624013901E-0001
>  5.16012400388717651367E-0001
>  2.02815276337787508965E-0001
>  5.62052882276475429535E-0001
>  9.15243660099804401398E-0001
>  7.51263931626453995705E-0001
>  9.20306718209758400917E-0001
>  9.01774314232170581818E-0001
>  7.98331435071304440498E-0001
> 
> The first two random numbers are always equal.
> 
> Am I missing something or is this a bug in 3.1.1?
> 
> Tony
> 
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal



More information about the fpc-pascal mailing list