add 0 to 1 float to xorshift implementation
This commit is contained in:
parent
131ea138ae
commit
00684179e1
Binary file not shown.
|
@ -12,15 +12,21 @@ uint32_t xorshift32(uint32_t* state)
|
|||
return *state = x;
|
||||
}
|
||||
|
||||
float rand_xorshift32(uint32_t* state){
|
||||
return (float) xorshift32(state) / UINT32_MAX;
|
||||
}
|
||||
|
||||
int main(){
|
||||
uint32_t** states = malloc(4 * sizeof(uint32_t*));
|
||||
for(int i=0; i<4;i++){
|
||||
states[i] = malloc(sizeof(uint32_t));
|
||||
*states[i] = i + 1;
|
||||
}
|
||||
|
||||
printf("%i\n", xorshift32(states[0]));
|
||||
printf("%i\n", xorshift32(states[1]));
|
||||
|
||||
for(int i=0; i<100; i++){
|
||||
printf("%u\n", xorshift32(states[0]));
|
||||
printf("%f\n", rand_xorshift32(states[1]));
|
||||
}
|
||||
for(int i=0; i<4;i++){
|
||||
free(states[i]);
|
||||
}
|
||||
|
@ -28,3 +34,6 @@ int main(){
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// See <https://stackoverflow.com/questions/53886131/how-does-xorshift32-works>
|
||||
// https://en.wikipedia.org/wiki/Xorshift
|
||||
|
|
Loading…
Reference in New Issue
Block a user