util.cpp

//__INSERT_LICENSE__
// $Id: util.cpp,v 1.11 2005/05/18 13:43:41 jdelia Exp $
/* 
   COMIENZO DE DESCRIPCION 
   Utilitarios varios. 
   keywords: lista, cola
   FIN DE DESCRIPCION 
*/
#include <cmath>
#include <cstdlib>
#include <list>
#include <iostream>
#include "./util.h"

using namespace std;

// -----------------------------------------------------------------
double drand() {
  return double(rand())/double(RAND_MAX);
}
// -----------------------------------------------------------------
int irand(int m) {
  return int(double(m)*drand());
}
// -----------------------------------------------------------------
void randl(list<int> &l,int m,int n) {
  for (int j=0;j<n;j++) l.insert(l.end(),irand(m));
}
// -----------------------------------------------------------------
void randl (list<int> &l,int m,double n) {
  // define una probabilidad de detenerse
  double lambda=1.0/(n+1.0);
  while (true) {
    if (drand()<lambda) break;
    l.insert(l.end(),irand(m));
  } 
} 
//--------------------------------------------------------------------
// llena un vector "vl" de "n" listas con listas "l_i" de longitudes 
// aleatorias "n_i" y contenidos tambien aleatorios (numeros enteros)
template <typename t>
void generar_vl(vector< list <t> > &vl) {
  typename  list< list<t> >::iterator p;
  int  k,z,n;
  n=vl.size();
  for (int i=0;i<n;i++) {
    z=irand(10);
    for (int j=0;j<z;j++) {
      k=irand(100);
      vl[i].insert(vl[i].end(),k);      
    }
  }
}

//--------------------------------------------------------------------
// imprime vector de listas
template <typename t>
void imprime_vl(vector< list <t> > &vl) {
  typename list<t>::iterator q,z;
  int n;
  n=vl.size();
  // imprime cada lista
  for (int i=0;i<n;i++) {
    cout << "lista l [" << i << "]: "; printl(vl[i]);
  }
}

Generated by GNU enscript 1.6.4.