In your version rand() % 10000
will yield an integer between 0
and 9999
. Since RAND_MAX may be as little as 32767, and since this is not exactly divisible by 10000 and not large relative to 10000, there will be significant bias in the ‘randomness’ of the result, moreover, the maximum value will be 0.9999, not 1.0, and you have unnecessarily restricted your values to four decimal places.
It is simple arithmetic, a random number divided by the maximum possible random number will yield a number from 0 to 1 inclusive, while utilising the full resolution and distribution of the RNG
double r2() { return (double)rand() / (double)RAND_MAX ; }
Use (double)rand() / (double)((unsigned)RAND_MAX + 1)
if exclusion of 1.0 was intentional.
Related Posts:
- How to use execvp()
- How to use execvp() to execute a command
- How does strtok() split the string into tokens in C?
- what is Segmentation fault (core dumped)? [duplicate]
- What causes a segmentation fault (core dump) to occur in C?
- uint8_t vs unsigned char
- How to use symbols of extended ASCII table in C?
- What is the difference between ++i and i++?
- Using boolean values in C
- What does “collect2: error: ld returned 1 exit status” mean?
- typedef struct vs struct definitions [duplicate]
- What can be the reasons of connection refused errors?
- typedef struct vs struct definitions [duplicate]
- Cannot figure out how to use getchar(); in C
- Why am I getting “void value not ignored as it ought to be”?
- 1 = false and 0 = true?
- c stack smashing detected
- char *array and char array[]
- Convert char to int in C and C++
- Get a substring of a char*
- What is Bit Masking?
- What causes the Broken Pipe Error?
- Strings and character with printf
- Why does the terminal show “^[[A” “^[[B” “^[[C” “^[[D” when pressing the arrow keys in Ubuntu?
- Why is the gets function so dangerous that it should not be used?
- Write to .txt file?
- What does “collect2: error: ld returned 1 exit status” mean?
- Warning comparison between pointer and integer
- What does #pragma once mean in C? [duplicate]
- Using ssize_t vs int
- Why a warning of “control reaches end of non-void function” for the main function?
- Connect: Socket operation on non-socket
- “Initializer element is not constant” in C
- How do you do exponentiation in C?
- Printing long int value in C
- Cannot assign requested address – possible causes?
- Undefined reference to pow( ) in C, despite including math.h [duplicate]
- error: called object is not a function or function pointer
- C read file line by line
- Try catch statements in C
- How do I create an array of strings in C?
- How to check if a string is a number?
- The difference between stdout and STDOUT_FILENO
- where does stdio.o live in linux machine?
- Get text from user input using C
- Using Dynamic Memory allocation for arrays
- How do I lowercase a string in C?
- Python ? (conditional/ternary) operator for assignments
- conflicting types error when compiling c program using gcc
- Get the current time in C
- What’s the difference between a file descriptor and file pointer?
- What is a file with extension .a?
- Cygwin – Makefile-error: recipe for target `main.o’ failed
- error: indirection requires pointer operand (‘int’ invalid)
- Why am I getting “undefined reference to sqrt” error even though I include math.h header?
- Why am I getting “undefined reference to sqrt” error even though I include math.h header?
- Finding the length of a Character Array in C
- Return char[]/string from a function
- Expected declaration specifier error in function
- Valgrind: Invalid read of size 1
- How to print a char array in C through printf?
- How to clear all the elements of array in C?
- Multiple definition of … linker error
- Does sizeof return the number of bytes or the number of octets of a type in C?
- Zero an array in C code
- Passing an array by reference in C?
- Excess elements in char array initializer error
- Encrypt with private key and decrypt with public key
- Warning: return from incompatible pointer type in C
- strcmp giving segmentation fault
- What does “pointer being freed was not allocated” mean exactly?
- How to use timer in C?
- C char* to int conversion
- What is the difference between stdin and STDIN_FILENO?
- error: aggregate value used where an integer was expected
- char pointers: invalid conversion from ‘char*’ to ‘char’?
- Allocating string with malloc
- How to simply convert a float to a string in c?
- What is the difference between char array and char pointer in C?
- hash function for string
- What happens during a “relocation has invalid symbol index” error?
- What are .axf files?
- Error: “Access not within mapped region at address” (Valgrind)
- printf format specifiers for uint32_t and size_t
- How to convert string to float?
- What is an simple example of copy_from_user
- What is `S_ISREG()`, and what does it do?
- typedef struct pointer definition
- How does the fscanf function work?
- Math constant PI value in C
- Return a `struct` from a function in C
- The code does not execute properly. Try to figure out why
- ld.exe: cannot open output file … : Permission denied
- How to read from input until newline is found using scanf()?
- getline() vs. fgets(): Control memory allocation
- What is char ** in C? [duplicate]
- segmentation fault using scanf
- Segmentation fault- strcat
- How to Compare 2 Character Arrays [duplicate]
- segmentation fault with strcpy [duplicate]