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.