call srand tickcount; call bingo 10; call bingo 3; call bingo 3; call bingo 10; endmacro; bingo: ##i = 0; while( ##i < ##1 ) { ##dest[##i] = ##i + 1; ##i = ##i + 1; } ##i = 0; while( ##i < ##1 ) { call rand; ##r = ##return % ( ##1 - ##i ) + ##i; ##tmp = ##dest[##r]; ##dest[##r] = ##dest[##i]; ##dest[##i] = ##tmp; ##i = ##i + 1; } ##i = 0; while( ##i < ##1 ) { if ( ##i > 0 ) { insert " "; } insert str( ##dest[##i] ); ##i = ##i + 1; } insert "\n"; return; rand: #rand_x = #rand_x * 214013 + 2531011; if ( #rand_x < 0 ) { return ( ( #rand_x + 1 ) / 65536 - 1 ) & 32767; } return #rand_x / 65536 & 32767; srand: #rand_x = ##1; return;