More efficient Random calls in Shuffle
This commit is contained in:
parent
168b005406
commit
e9bd8979b0
1 changed files with 5 additions and 2 deletions
|
@ -1,5 +1,8 @@
|
|||
#include "global.h"
|
||||
#include "random.h"
|
||||
#if MODERN
|
||||
#include <alloca.h>
|
||||
#endif
|
||||
|
||||
EWRAM_DATA static u8 sUnknown = 0;
|
||||
EWRAM_DATA static u32 sRandCount = 0;
|
||||
|
@ -37,7 +40,7 @@ u16 Random2(void)
|
|||
--n; \
|
||||
while (n > 1) \
|
||||
{ \
|
||||
int j = Random() % (n+1); \
|
||||
int j = (Random() * (n+1)) >> 16; \
|
||||
SWAP(data[n], data[j], tmp); \
|
||||
--n; \
|
||||
}
|
||||
|
@ -66,7 +69,7 @@ void ShuffleN(void *data, size_t n, size_t size)
|
|||
--n;
|
||||
while (n > 1)
|
||||
{
|
||||
int j = Random() % (n+1);
|
||||
int j = (Random() * (n+1)) >> 16;
|
||||
memcpy(tmp, (u8 *)data + n*size, size); // tmp = data[n];
|
||||
memcpy((u8 *)data + n*size, (u8 *)data + j*size, size); // data[n] = data[j];
|
||||
memcpy((u8 *)data + j*size, tmp, size); // data[j] = tmp;
|
||||
|
|
Loading…
Reference in a new issue