2018-05-07 05:58:06 +08:00
|
|
|
// SPDX-License-Identifier: GPL-2.0+
|
2012-06-05 19:33:14 +08:00
|
|
|
/*
|
|
|
|
* Simple xorshift PRNG
|
|
|
|
* see http://www.jstatsoft.org/v08/i14/paper
|
|
|
|
*
|
|
|
|
* Copyright (c) 2012 Michael Walle
|
|
|
|
* Michael Walle <michael@walle.cc>
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <common.h>
|
2019-11-15 03:57:13 +08:00
|
|
|
#include <rand.h>
|
2012-06-05 19:33:14 +08:00
|
|
|
|
|
|
|
static unsigned int y = 1U;
|
|
|
|
|
|
|
|
unsigned int rand_r(unsigned int *seedp)
|
|
|
|
{
|
|
|
|
*seedp ^= (*seedp << 13);
|
|
|
|
*seedp ^= (*seedp >> 17);
|
|
|
|
*seedp ^= (*seedp << 5);
|
|
|
|
|
|
|
|
return *seedp;
|
|
|
|
}
|
|
|
|
|
|
|
|
unsigned int rand(void)
|
|
|
|
{
|
|
|
|
return rand_r(&y);
|
|
|
|
}
|
|
|
|
|
|
|
|
void srand(unsigned int seed)
|
|
|
|
{
|
|
|
|
y = seed;
|
|
|
|
}
|