ADMB Documentation  11.5.3197
 All Classes Files Functions Variables Typedefs Friends Defines
ranf_ni.cpp
Go to the documentation of this file.
00001 /*
00002  * $Id$
00003  *
00004  * Author: David Fournier
00005  * Copyright (c) 2008-2012 Regents of the University of California
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 dvector::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;
00048       }
00049       else
00050       {
00051         elem(i)=0;
00052       }
00053     }
00054   }
00055 
00060   void dvector::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 dmatrix::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 dmatrix::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 dvector::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 dmatrix::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 d3_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 d3_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 dmatrix::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 dmatrix::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 dmatrix::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   }