: How can we generate normalized random numbers ?
echo " "
-echo "Looking for a random number function..." >&4
-case "$randfunc" in
-'')
- if set drand48 val -f; eval $csym; $val; then
- dflt="drand48"
- echo "Good, found drand48()." >&4
- elif set random val -f; eval $csym; $val; then
- dflt="random"
- echo "OK, found random()." >&4
- else
- dflt="rand"
- echo "Yuck, looks like I have to use rand()." >&4
- fi
- echo " "
- ;;
-*)
- dflt="$randfunc"
- ;;
-esac
-cont=true
+echo "Using our internal random number implementation..." >&4
case "$ccflags" in
*-Dmy_rand=*|*-Dmy_srand=*)
;;
esac
-while $test "$cont"; do
- rp="Use which function to generate random numbers?"
- . ./myread
- if $test "$ans" = "$dflt"; then
- : null
- else
- randbits=''
- fi
- randfunc="$ans"
- if set $ans val -f; eval $csym; $val; then
- cont=''
- else
- dflt=y
- rp="I cannot find function $ans. Use that name anyway?"
- . ./myread
- dflt=rand
- case "$ans" in
- [yY]*) cont='';;
- esac
- fi
- case "$cont" in
- '')
- case "$randfunc" in
- drand48)
- drand01="drand48()"
- seedfunc="srand48"
- randbits=48
- randseedtype=long
- ;;
- rand|random)
- case "$randbits" in
- '')
-echo "Checking to see how many bits your $randfunc() function produces..." >&4
- $cat >try.c <<EOCP
-#$i_unistd I_UNISTD
-#$i_stdlib I_STDLIB
-#include <stdio.h>
-#ifdef I_UNISTD
-# include <unistd.h>
-#endif
-#ifdef I_STDLIB
-# include <stdlib.h>
-#endif
-int main()
-{
- int i;
- unsigned long tmp;
- unsigned long max = 0L;
-
- for (i = 1000; i; i--) {
- tmp = (unsigned long) $randfunc();
- if (tmp > max) max = tmp;
- }
- for (i = 0; max; i++)
- max /= 2;
- printf("%d\n",i);
-}
-EOCP
- set try
- if eval $compile_ok; then
- dflt=`try`
- else
- dflt='?'
- echo "(I can't seem to compile the test program...)"
- fi
- ;;
- *)
- dflt="$randbits"
- ;;
- esac
- rp="How many bits does your $randfunc() function produce?"
- . ./myread
- randbits="$ans"
- $rm_try
- drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
- seedfunc="s$randfunc"
- randseedtype=unsigned
- ;;
- *)
- dflt="31"
- rp="How many bits does your $randfunc() function produce?"
- . ./myread
- randbits="$ans"
- seedfunc="s$randfunc"
- drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
- if set $seedfunc val -f; eval $csym; $val; then
- echo "(Using $seedfunc() to seed random generator)"
- else
- echo "(Warning: no $seedfunc() to seed random generator)"
- seedfunc=rand
- fi
- randseedtype=unsigned
- ;;
- esac
- ;;
- esac
-done
+randfunc=Perl_drand48
+drand01="Perl_drand48()"
+seedfunc="Perl_drand48_init"
+randbits=48
+randseedtype=U32
: Check how to flush
echo " "
dlext='so'
dlsrc='dl_dlopen.xs'
doublesize='8'
-drand01='drand48()'
+drand01='Perl_drand48()'
drand48_r_proto='0'
dtrace=''
dynamic_ext='B ByteLoader Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes re threads threads/shared'
quadkind='3'
quadtype='long long'
randbits='48'
-randfunc='drand48'
+randfunc='Perl_drand48'
random_r_proto='0'
-randseedtype='long'
+randseedtype='U32'
ranlib=':'
rd_nodata='-1'
readdir64_r_proto='0'
scriptdir='/usr/bin'
scriptdirexp='/usr/bin'
sed='sed'
-seedfunc='srand48'
+seedfunc='Perl_drand48_init'
selectminbits='32'
selecttype='fd_set *'
sendmail=''
dlext='so'
dlsrc='dl_dlopen.xs'
doublesize='8'
-drand01='drand48()'
+drand01='Perl_drand48()'
drand48_r_proto='0'
dynamic_ext='B ByteLoader Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes re threads threads/shared'
eagain='EAGAIN'
quadkind='3'
quadtype='long long'
randbits='48'
-randfunc='drand48'
+randfunc='Perl_drand48'
random_r_proto='0'
-randseedtype='long'
+randseedtype='U32'
ranlib=':'
rd_nodata='-1'
readdir64_r_proto='0'
scriptdir='/usr/bin'
scriptdirexp='/usr/bin'
sed='sed'
-seedfunc='srand48'
+seedfunc='Perl_drand48_init'
selectminbits='32'
selecttype='fd_set *'
sendmail=''
dlext='nlm'
dlsrc='dl_netware.xs'
doublesize='8'
-drand01='(rand()/(double)((unsigned)1<<RANDBITS))'
+drand01='Perl_drand48()'
drand48_r_proto='0'
dtrace=''
dynamic_ext='Socket IO Fcntl Opcode SDBM_File attributes'
ptrsize='4'
quadkind='5'
quadtype='__int64'
-randbits='15'
-randfunc='rand'
+randbits='48'
+randfunc='Perl_drand48'
random_r_proto='0'
-randseedtype='unsigned'
+randseedtype='U32'
ranlib='rem'
rd_nodata='-1'
readdir64_r_proto='0'
scriptdir='~INST_TOP~~INST_VER~\bin'
scriptdirexp='~INST_TOP~~INST_VER~\bin'
sed='sed'
-seedfunc='srand'
+seedfunc='Perl_drand48_init'
selectminbits='32'
selecttype='fd_set *'
sendmail='blat'
* function used to generate normalized random numbers.
* Values include 15, 16, 31, and 48.
*/
-#define Drand01() Perl_drand48() /**/
-#define Rand_seed_t U32 /**/
-#define seedDrand01(x) Perl_drand48_init((Rand_seed_t)x) /**/
-#define RANDBITS 48 /**/
+#define Drand01() Perl_drand48() /**/
+#define Rand_seed_t U32 /**/
+#define seedDrand01(x) Perl_drand48_init((Rand_seed_t)x) /**/
+#define RANDBITS 48 /**/
/* Select_fd_set_t:
* This symbol holds the type used for the 2nd, 3rd, and 4th
#endif
/* Generated from:
- * eea5809659d1cac397ca3a1a48f51bcb5bfc60eb2dca2ef00b9b2015ee87729a config_h.SH
- * 3dc6c26adfbf4f2e111d90b34d50e317e18555a76a270fbac2899d08a42f2fd1 uconfig.sh
+ * fd2554fe3bee85bee863afd558a83caa6c1a317e9a044639199eda0827db903e config_h.SH
+ * 2a46be0c2dea164ef0186898854f667c064d678c6927d13e926c1bb37d9d4d0e uconfig.sh
* ex: set ro: */
defvoidused=1
direntrytype='struct dirent'
doublesize='8'
-drand01="((rand() & 0x7FFF) / (double) ((unsigned long)1 << 15))"
+drand01="Perl_drand48()"
drand48_r_proto='0'
dtrace=''
eagain='EAGAIN'
quadkind='4'
quadtype='int64_t'
randbits='48'
-randfunc='drand48'
+randfunc='Perl_drand48'
random_r_proto='0'
-randseedtype='int'
+randseedtype='U32'
rd_nodata='-1'
readdir64_r_proto='0'
readdir_r_proto='0'
sched_yield='sched_yield()'
scriptdir='/usr/local/bin'
scriptdirexp='/usr/local/bin'
-seedfunc='srand'
+seedfunc='Perl_drand48_init'
selectminbits='32'
selecttype=int
setgrent_r_proto='0'
dlext='dll'
dlsrc='dl_win32.xs'
doublesize='8'
-drand01='(rand()/(double)((unsigned)1<<RANDBITS))'
+drand01='Perl_drand48()'
drand48_r_proto='0'
dtrace=''
dynamic_ext='Socket IO Fcntl Opcode SDBM_File attributes'
ptrsize='4'
quadkind='5'
quadtype='__int64'
-randbits='15'
-randfunc='rand'
+randbits='48'
+randfunc='Perl_drand48'
random_r_proto='0'
-randseedtype='unsigned'
+randseedtype='U32'
ranlib='rem'
rd_nodata='-1'
readdir64_r_proto='0'
scriptdir='~INST_TOP~~INST_VER~\bin'
scriptdirexp='~INST_TOP~~INST_VER~\bin'
sed='sed'
-seedfunc='srand'
+seedfunc='Perl_drand48_init'
selectminbits='32'
selecttype='Perl_fd_set *'
sendmail='blat'
dlltool='~ARCHPREFIX~dlltool'
dlsrc='dl_win32.xs'
doublesize='8'
-drand01='(rand()/(double)((unsigned)1<<RANDBITS))'
+drand01='Perl_drand48()'
drand48_r_proto='0'
dtrace=''
dynamic_ext='Socket IO Fcntl Opcode SDBM_File attributes'
ptrsize='4'
quadkind='3'
quadtype='long long'
-randbits='15'
-randfunc='rand'
+randbits='48'
+randfunc='Perl_drand48'
random_r_proto='0'
-randseedtype='unsigned'
+randseedtype='U32'
ranlib='rem'
rd_nodata='-1'
readdir64_r_proto='0'
scriptdir='~INST_TOP~~INST_VER~\bin'
scriptdirexp='~INST_TOP~~INST_VER~\bin'
sed='sed'
-seedfunc='srand'
+seedfunc='Perl_drand48_init'
selectminbits='32'
selecttype='Perl_fd_set *'
sendmail='blat'
dlext='dll'
dlsrc='dl_win32.xs'
doublesize='8'
-drand01='(rand()/(double)((unsigned)1<<RANDBITS))'
+drand01='Perl_drand48()'
drand48_r_proto='0'
dtrace=''
dynamic_ext='Socket IO Fcntl Opcode SDBM_File attributes'
ptrsize='4'
quadkind='5'
quadtype='__int64'
-randbits='15'
-randfunc='rand'
+randbits='48'
+randfunc='Perl_drand48'
random_r_proto='0'
-randseedtype='unsigned'
+randseedtype='U32'
ranlib='rem'
rd_nodata='-1'
readdir64_r_proto='0'
scriptdir='~INST_TOP~~INST_VER~\bin'
scriptdirexp='~INST_TOP~~INST_VER~\bin'
sed='sed'
-seedfunc='srand'
+seedfunc='Perl_drand48_init'
selectminbits='32'
selecttype='Perl_fd_set *'
sendmail='blat'