#!/usr/bin/perl

my @attributs=('4 roues motrices', 'abs', 'toit ouvrant', 'jantes aluminium', 'boite automatique', 'regulateur de vitesse', 'climatisation');
my @modeles=('clio','twingo','kangoo','megane');
my $nb_a_generer=100000;

sub genere_a_z
{
	my $rnd=int(rand(26));
	$rnd+=65;
	return chr($rnd);
}

sub genere_immat
{
	my $genere=genere_a_z().genere_a_z().'-'.int(rand(10)).int(rand(10)).int(rand(10)).'-'.genere_a_z().genere_a_z();
	return $genere;
}

sub genere_modele
{
	my $rnd=int(rand(scalar(@modeles)));
	return $modeles[$rnd];
}

sub nb_attributs_echelle_log
{
	# Je veux peu de voitures ayant beaucoup d'attributs. Je génère donc un random à exp(nb_attributs), et 
	# j'en prends le logarithme. Cette valeur a une très forte probabilité d'être proche de nb_attributs
	my $nb=scalar(@attributs)-int(log(rand(exp(scalar(@attributs)))))-1;
	return $nb;
}


sub genere_attributs
{
	my $nb_attributs=nb_attributs_echelle_log();
	my @return;
	my @tmp_attributs=@attributs;
	for (my $i=0;$i<$nb_attributs;$i++)
	{
		my $rnd=int(rand(scalar(@tmp_attributs)));
		push @return,($tmp_attributs[$rnd]);
		splice @tmp_attributs,$rnd,1;
	}
	return join(',',@return);
}

for (my $i=0;$i<$nb_a_generer;$i++)
{
	my $immat=genere_immat();
	my $modele=genere_modele();
	my $attributs=genere_attributs();
	print "$immat\t$modele\t$attributs\n";
}

