1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+ 29acf1ca5SMichael Walle /* 39acf1ca5SMichael Walle * Simple xorshift PRNG 49acf1ca5SMichael Walle * see http://www.jstatsoft.org/v08/i14/paper 59acf1ca5SMichael Walle * 69acf1ca5SMichael Walle * Copyright (c) 2012 Michael Walle 79acf1ca5SMichael Walle * Michael Walle <michael@walle.cc> 89acf1ca5SMichael Walle */ 99acf1ca5SMichael Walle 109acf1ca5SMichael Walle #include <common.h> 119acf1ca5SMichael Walle 129acf1ca5SMichael Walle static unsigned int y = 1U; 139acf1ca5SMichael Walle rand_r(unsigned int * seedp)149acf1ca5SMichael Walleunsigned int rand_r(unsigned int *seedp) 159acf1ca5SMichael Walle { 169acf1ca5SMichael Walle *seedp ^= (*seedp << 13); 179acf1ca5SMichael Walle *seedp ^= (*seedp >> 17); 189acf1ca5SMichael Walle *seedp ^= (*seedp << 5); 199acf1ca5SMichael Walle 209acf1ca5SMichael Walle return *seedp; 219acf1ca5SMichael Walle } 229acf1ca5SMichael Walle rand(void)239acf1ca5SMichael Walleunsigned int rand(void) 249acf1ca5SMichael Walle { 259acf1ca5SMichael Walle return rand_r(&y); 269acf1ca5SMichael Walle } 279acf1ca5SMichael Walle srand(unsigned int seed)289acf1ca5SMichael Wallevoid srand(unsigned int seed) 299acf1ca5SMichael Walle { 309acf1ca5SMichael Walle y = seed; 319acf1ca5SMichael Walle } 32