summaryrefslogtreecommitdiff
path: root/firmware/common
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2002-07-18 00:03:47 +0000
committerBjörn Stenberg <bjorn@haxx.se>2002-07-18 00:03:47 +0000
commit25e92bd967ce404ebe9bf8e6ff7b6b9f5f32e8f9 (patch)
tree58059d6f5d8bf7134d86dddf629f36f512fb992a /firmware/common
parent3a62b56740856226e6debf6c2f7a6cdb0435db80 (diff)
downloadrockbox-25e92bd967ce404ebe9bf8e6ff7b6b9f5f32e8f9.zip
rockbox-25e92bd967ce404ebe9bf8e6ff7b6b9f5f32e8f9.tar.gz
rockbox-25e92bd967ce404ebe9bf8e6ff7b6b9f5f32e8f9.tar.bz2
rockbox-25e92bd967ce404ebe9bf8e6ff7b6b9f5f32e8f9.tar.xz
Vastly improved, now working, random! :)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1379 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/common')
-rw-r--r--firmware/common/random.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/firmware/common/random.c b/firmware/common/random.c
index 1e65eef..5471534 100644
--- a/firmware/common/random.c
+++ b/firmware/common/random.c
@@ -142,12 +142,16 @@ int rand(void)
{
int y;
- if(--left < 0)
- return rand_reload();
-
- y = *next++;
- y ^= (y >> 11);
- y ^= (y << 7) & 0x9D2C5680U;
- y ^= (y << 15) & 0xEFC60000U;
- return (y ^ (y >> 18)) & ((2^31)-1); /* 31-bit limit by Björn Stenberg*/
+ if(--left < 0) {
+ y = rand_reload();
+ }
+ else {
+ y = *next++;
+ y ^= (y >> 11);
+ y ^= (y << 7) & 0x9D2C5680U;
+ y ^= (y << 15) & 0xEFC60000U;
+ y ^= (y >> 18);
+ }
+
+ return y & 0x7fffffff; /* 31-bit limit by Björn Stenberg*/
}