TIP: Click on subject to list as thread! ANSI
echo: evolution
to: All
from: Malcolm
date: 2004-11-07 21:59:00
subject: Re: Tongues, curling into

"Brett Aubrey"  wrote
>
> In Richard Dawkin's The Ancestor's Tale, he mentions the 50/50 split on
> Humanity's ability to curl our tongue into a tube.  Might there have been
a
> reason for this trait, or its' absense?  Or is this just likely an example
> of a minor mutation that is advantageously neutral?  Or something else?
TIA
> Regards, Brett Aubrey.
>
When you do the sums, you will see that a trait with an adaptive advantage
too small to meaure can have a huge influence. (Try this)

#include 
#include 
#include 

void usage(void);
void mousegrow(double advantage, double sd, int gens);
void jitter(double *x, int N, double sd);
void renormalise(double *x, int N, double sd);
double mean(double *x, int N);
double gaussrand();
double uniform(void);

int main(int argc, char **argv)
{
  if(argc != 4)
    usage();

  mousegrow( atof(argv[1]), atof(argv[2]), atoi(argv[3]) );

  return 0;
}

void usage(void)
{
  printf("Mousegrow, evolution demonstration\n");
  printf("Usage: mousegrow  
\n");
  printf("advantage - the advantage of being in the top half"
    "of the distribution (eg 0.001) \n");
  printf("jitter - the jitter factor(eg 0.01)\n");
  printf("gens - number of generations to run the simulation\n");
  printf("\nMonte Carlo simulation with an asexual population of 1000\n");

  exit(0);
}


/*
  run the simulation
*/
void mousegrow(double advantage, double sd, int gens)
{
  int i;
  int ii;
  double *pop;
  double xbar;
  int target;

  pop = malloc(1000 * sizeof(double));

  // popuate with random men 5
  for(i=0;i<1000;i++)
    pop[i] = 5.0 + gaussrand();

  // main loop
  for(i=0;i xbar)
   {
     if( uniform() < 0.5 )
  {
    // just replace a random individual with a copy of yourself
    target = rand() % 1000;
    pop[target] = pop[ii];
  }
   }
   // if we are below, the chance drops to 0.5 - s
   else
   {
     if(uniform() < 0.5 - advantage)
  {
    target = rand() % 1000;
    pop[target] = pop[ii];
  }
   }
 }
  }

  free(pop);
}


/*
  add a bit of evolutionary noise to the population
  (models mutations)
*/
void jitter(double *x, int N, double sd)
{
  int i;

  for(i=0;i= 1 || S == 0);
     X = V1 * sqrt(-2 * log(S) / S);
  }
  else
    X = V2 * sqrt(-2 * log(S) / S);

  phase = 1 - phase;
  return X;
}

/*
  random number on the interval 0-1
*/
double uniform(void)
{
  return rand() / (RAND_MAX + 1.0);
}
---
þ RIMEGate(tm)/RGXPost V1.14 at BBSWORLD * Info{at}bbsworld.com

---
 * RIMEGate(tm)V10.2áÿ* RelayNet(tm) NNTP Gateway * MoonDog BBS
 * RgateImp.MoonDog.BBS at 11/7/04 9:59:05 PM
* Origin: MoonDog BBS, Brooklyn,NY, 718 692-2498, 1:278/230 (1:278/230)
SEEN-BY: 633/267 270 5030/786
@PATH: 278/230 10/345 106/1 2000 633/267

SOURCE: echomail via fidonet.ozzmosis.com

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.