Codebase list libmawk / a323d5b2-e0eb-4fad-b708-b7817dc988fe/main src / awklib / lib_rand.awk
a323d5b2-e0eb-4fad-b708-b7817dc988fe/main

Tree @a323d5b2-e0eb-4fad-b708-b7817dc988fe/main (Download .tar.gz)

lib_rand.awk @a323d5b2-e0eb-4fad-b708-b7817dc988fe/mainraw · history · blame

function lib_rand_version()
{
	return 1
}
# core code by nsz


# STATE is an array that stores all states of a random queue
# random queues generate pseudo random numbers independently of other queues

# set random seed on STATE
# if seed is not provided, a random number us choosen (use srand() before that)
function lib_rand_srand(STATE, seed) {
	if (seed == "")
		seed = rand()
	STATE[lib_rand_state] = lib_rand_mod_2_26(int(seed))
}

# get next random number from queue STATE
function lib_rand_rand(STATE) {
	STATE[lib_rand_state] = lib_rand_mod_2_26(54514969*STATE[lib_rand_state] + 21095981)
	return STATE[lib_rand_state]/67108864
}

# internal
function lib_rand_mod_2_26(n) {
	n -= int(n/67108864)*67108864
	return n
}