Esempio n. 1
0
void generationPar(int N,IplImage *img,IplImage *Logo){

  int i;
  srand(time(NULL));  

  key=alocavd(NWB); // On génère aléatoirement les clefs ( entre 0 et 0,25 )
  for(i=0;i<NWB;i++)
    key[i]=(((double)rand()/(RAND_MAX))/4);
  
  logoToBin (Logo); // On convertie le logo en binaires, ce sera le message à tatouer

  if ((KEY=fopen("Resultat/key.txt","w"))==NULL){
    printf("Erreur ouverture fichier.\n");
    exit (EXIT_FAILURE);
  }

  for (i=0;i<NWB;i++)
    fprintf(KEY,"%f\n",key[i]);
  fclose (KEY);

}
Esempio n. 2
0
void opiniao(int n, no **rede, int T, double semente, double J, double epsilon, double q, FILE *out) {
  // ---------------------------------------------------
  // Aqui é a parte da simulação da dinâmica de opinião.
  // ---------------------------------------------------

  int t=0, i; // passo monte-carlo e iterador de sítios da rede
  int *k, *s; // vetor de conectividade e com o estado dos sitios;
  double *h, prob, rho=0; // campo local de cada sítio e taca de transição
  no *p; // iterador de sítios da re
  
  // Iniciando a galera
  s=alocavi(n);
  h=alocavd(n);
  k=grau_vertices(rede,n);
  srand(semente);

  // Estado inicial aleatório
  for(i=0;i<n;i++)
    s[i]=rand()%2;
  
  for(i=0;i<n;i++)
    rho+=s[i];
  rho/=((double)n);
  // Primeiro ponto na saida
  fprintf(out, "%d %lf\n", t, rho);

  // O monte-carlo começa aqui
  for(t=0;t<T;t++) {

    rho=0;

    // Calcular o vetor h dos sítios
    for(i=0;i<n;i++) {
      for(p=rede[i]->prox;p!=NULL;p=p->prox)
	h[i]+=s[p->rotulo];
      h[i]=h[i]/(double)k[i];
    }

      // Atualiza os sítios
    for(i=0;i<n;i++) {
      prob=rand()/(double)RAND_MAX;
      if(prob<tau(J,epsilon,q,h[i])) {
	if(s[i]==0) s[i]=1;
      }
      else
	if(s[i]==1) s[i]=0;
    }

    // Calcula a densidade
    for(i=0;i<n;i++)
      rho+=s[i];
    rho/=((double)n);

    // Imprime saída
    fprintf(out, "%d %lf\n", t, rho);

  }

  free(s);
  free(h);
  free(k);
  
}