Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00011 #include <fvar.hpp>
00012
00013 #ifdef __TURBOC__
00014 #pragma hdrstop
00015 #include <iostream.h>
00016 #endif
00017
00018 #ifdef __ZTC__
00019 #include <iostream.hpp>
00020 #endif
00021
00022 #include <math.h>
00023
00024
00025 double auto_rand(long int& idum, int reset);
00026 void reinitialize_auto_rand();
00027 double randn(long int& n);
00028
00033 void dvar_vector::fill_randbi_ni(long int& n, double p)
00034 {
00035 if ( p<0 || p>1)
00036 {
00037 cerr << "Error in dvar_vector::fill_randbi proportions of"
00038 " successes must lie between 0 and 1\n";
00039 ad_exit(1);
00040 }
00041 long int nn;
00042 nn=n;
00043 for (int i=indexmin(); i<=indexmax(); i++)
00044 {
00045 if (auto_rand(nn,1)<=p)
00046 {
00047 elem(i)=1.0;
00048 }
00049 else
00050 {
00051 elem(i)=0.0;
00052 }
00053 }
00054 }
00055
00060 void dvar_vector::fill_randu_ni(long int& n)
00061 {
00062 long int nn;
00063 nn=n;
00064 for (int i=indexmin(); i<=indexmax(); i++)
00065 {
00066 elem(i)=auto_rand(nn,1);
00067 }
00068 }
00069
00074 void dvar_matrix::colfill_randu_ni(const int &j, long int &n)
00075 {
00076 long int nn;
00077 nn=n;
00078 for (int i=rowmin(); i<=rowmax(); i++)
00079 {
00080 elem(i,j)=auto_rand(nn,1);
00081 }
00082 }
00083
00088 void dvar_matrix::rowfill_randu_ni(const int& i, long int& n)
00089 {
00090 long int nn;
00091 nn=n;
00092 for (int j=colmin(); j<=colmax(); j++)
00093 {
00094 elem(i,j)=auto_rand(nn,1);
00095 }
00096 }
00097
00102 void dvar_vector::fill_randn_ni(long int& n)
00103 {
00104 long int nn;
00105 nn=n;
00106 for (int i=indexmin(); i<=indexmax(); i++)
00107 {
00108 elem(i)=randn(nn);
00109 }
00110 }
00111
00116 void dvar_matrix::fill_randn_ni(long int& n)
00117 {
00118 long int nn=n;
00119 for (int i=rowmin(); i<=rowmax(); i++)
00120 {
00121 elem(i).fill_randn_ni(nn);
00122 nn+=2;
00123 }
00124 }
00125
00130 void dvar3_array::fill_randn_ni(long int& n)
00131 {
00132 long int nn;
00133 nn=n;
00134 for (int i=slicemin(); i<=slicemax(); i++)
00135 {
00136 elem(i).fill_randn_ni(nn);
00137 nn+=2;
00138 }
00139 }
00140
00145 void dvar3_array::fill_randu_ni(long int& n)
00146 {
00147 long int nn;
00148 nn=n;
00149 for (int i=slicemin(); i<=slicemax(); i++)
00150 {
00151 elem(i).fill_randu_ni(nn);
00152 nn+=2;
00153 }
00154 }
00155
00160 void dvar_matrix::fill_randu_ni(long int& n)
00161 {
00162 long int nn;
00163 nn=n;
00164 for (int i=rowmin(); i<=rowmax(); i++)
00165 {
00166 elem(i).fill_randu_ni(nn);
00167 nn+=2;
00168 }
00169 }
00170
00175 void dvar_matrix::colfill_randn_ni(const int &j,long int &n)
00176 {
00177 long int nn;
00178 nn=n;
00179 for (int i=rowmin(); i<=rowmax(); i++)
00180 {
00181 elem(i,j)=randn(nn);
00182 }
00183 }
00184
00189 void dvar_matrix::rowfill_randn_ni(const int& i, long int& n)
00190 {
00191 long int nn;
00192 nn=n;
00193 for (int j=colmin(); j<=colmax(); j++)
00194 {
00195 elem(i,j)=randn(nn);
00196 }
00197 }