Java - 66 chars
int rand7(){int s;while((s=rand5()*5+rand5())<10);return(s%7+1);}
Longer than previous routine, but I think this one returns uniformly distributed numbers in less time.
int rand7(){int s;while((s=rand5()*5+rand5())<10);return(s%7+1);}
Longer than previous routine, but I think this one returns uniformly distributed numbers in less time.