#include "quiz.h" extern struct thai_phrase *random (); random_sentence () { chosen_sentence = random ( &sentence_head ); } random_word () { chosen_word = random ( &word_head ); } static struct thai_phrase * random ( head ) struct thai_phrase *head; { long dist (); long count; long total_right; long total_wrong; long num; static long seed = 0; struct thai_phrase *p; ULONG seconds , micros; if ( head->next == NULL ) return ( head ); total_right = 0; total_wrong = 0; count = 0; for ( p = head->next; p != NULL; p = p->next ) { total_right += p->right; total_wrong += p->wrong; count++; } CurrentTime ( &seconds , µs ); seed += seconds + micros + 1234567; num = ( seed & 0x7FFF ) % ( count + dist ( total_wrong , total_right ) ); for ( p = head->next; p != NULL; p = p->next ) { num -= dist ( (long)p->wrong , (long)p->right ) + 1; if ( num < 0 ) return ( p ); } return ( head->next ); } static long dist ( wrong , right ) long wrong , right; { if ( wrong > right ) return ( wrong - right ); return ( 0 ); }