For working professionals
For fresh graduates
More
Explore C Tutorials: From Begi…
1. Introduction to C Tutorial
2. Addition of Two Numbers in C
3. Anagram Program in C
4. Armstrong Number in C
5. Array in C
6. Array of Pointers in C
7. Array of Structure in C
8. C Program to Find ASCII Value of a Character
9. Assignment Operator in C
10. Binary Search in C
11. Binary to Decimal in C
12. Bitwise Operators in C
13. Boolean in C
14. C Compiler for Mac
15. C Compiler for Windows
16. C Function Call Stack
17. C Language Download
18. Operators in C
19. C/C++ Preprocessors
20. C Program for Bubble Sort
21. C Program for Factorial
22. C Program for Prime Numbers
23. C Program for String Palindrome
24. C Program to Reverse a Number
25. Reverse a String in C
26. C string declaration
27. String Input Output Functions in C
28. Calculator Program in C
29. Call by Value and Call by Reference in C
30. Ceil Function in C
31. Coding Vs. Programming
32. Command Line Arguments in C/C++
33. Comments in C
34. Compilation process in C
35. Conditional Statements in C
36. Conditional operator in the C
37. Constant Pointer in C
38. Constants in C
39. Dangling Pointer in C
40. Data Structures in C
41. Data Types in C
42. Debugging C Program
43. Convert Decimal to Binary in C
44. Define And include in C
45. Difference Between Arguments And Parameters
46. Difference Between Compiler and Interpreter
47. Difference Between If Else and Switch
48. Do While Loop In C
49. Double In C
50. Dynamic Array in C
51. Dynamic Memory Allocation in C
52. Enumeration (or enum) in C
53. Evaluation of Arithmetic Expression
54. Factorial of A Number in C
55. Features of C Language
56. Fibonacci Series Program in C Using Recursion
57. File Handling in C
58. For Loop in C
59. Format Specifiers in C
60. Functions in C
61. Function Pointer in C
62. goto statement in C
63. C Hello World Program
64. Header Files in C
65. Heap Sort in C Program
66. Hello World Program in C
67. History of C Language
68. How to compile a C program in Linux
69. How to Find a Leap Year Using C Programming
70. Identifiers in C
71. If Else Statement in C
72. If Statement in C
73. Implementation of Queue Using Linked List
74. Increment and decrement operators in c
75. Input and Output Functions in C
76. How To Install C Language In Mac
77. Jump Statements in C
78. Lcm of Two Numbers in C
79. Length of an Array in C
80. Library Function in C
81. Linked list in C
82. Logical Operators in C
83. Macros in C
84. Matrix multiplication in C
85. Nested if else statement in C
86. Nested Loop in C
87. One Dimensional Array in C
88. Operator Precedence and Associativity in C
89. Overflow And Underflow in C
90. Palindrome Program in C
91. Pattern Programs in C
92. Pointer to Pointer in C
93. Pointers in C: A Comprehensive Tutorial
94. Pre-increment And Post-increment
95. Prime Number Program in C
96. Program for Linear Search in C
97. Pseudo-Code In C
98. Random Access Files in C
99. Random Number Generator in C
Now Reading
12 mins read
100. Recursion in C
101. Relational Operators in C
102. Simple interest program in C
103. Square Root in C
104. Stack in C
105. Stack Using Linked List in C
106. Static function in C
107. Stdio.h in C
108. Storage Classes in C
109. strcat() in C
110. Strcmp in C
111. Strcpy in C
112. String Comparison in C
113. String Functions in C
114. String Length in C
115. String Pointer in C
116. strlen() in C
117. Structures in C
118. Structure of C Program
119. Switch Case in C
120. C Ternary Operator
121. Tokens in C
122. Toupper Function in C
123. Transpose of a Matrix in C
124. Two Dimensional Array in C
125. Type Casting in C
126. Types of Error in C
127. Unary Operator in C
128. Use of C Language
129. User Defined Functions in C
130. What is Variables in C
131. Is C language case sensitive
132. Fibonacci Series in C
Random number generator in C refers to the process of generating any random number (within your defined range) that can be processed further to obtain the expected output. The function is vital across domains such as computer security, random testing, cryptography or statistical analysis and can be implemented to introduce unpredictability and randomness.
After generating a sequence of random numbers, computers can generate truly random results which are hard to predict. This unpredictability helps ensure data security and avoids hacking. The random function in C has two inbuilt functions, i.e., rand() and srand(). They can generate the same and dissimilar random numbers upon execution.
Let’s explore random number generation in C and its various aspects.
Pseudo-Random Number Generator (PRNG) is a program where the conversion starting number (known as the seed) is converted to another number different from the seed. This random number generator in C++ generates an outcome that appears unpredictable but, essentially, is the result of a closely defined mathematical process.
The inbuilt functions in C -rand() and srand() are used for random number generator in C/C++.
C doesn’t support an inbuilt function for generating a number within the range. However, the rand function works as a random number generator in C that generates a random integer in the range of 0 to RAND_MAX. You can use rand () to generate a number (in the range) as num = (rand() % (upper – lower + 1)) + lower.
Note that the RAND_MAX is a symbolic constant defined in the stdlib.h header file. Based on the C libraries, its value can be greater or lesser than 32767.
This random number generator in C within a range accepts values from [0, Range_max]. Note that the Range_max value can be an integer.
While using the rand() function in a program, you must implement the stdlib.h header file since the rand() function is defined in the stdlib header file. It doesn’t contain any seed number. Hence, when you execute the same program frequently, it returns identical values.
int rand(void) |
The rand function doesn’t accept any parameters; it only returns random numbers.
The srand() in C is used to initialise the value of the seed. In case srand() is not initialised, the seed value in srand() function is set as srand(1). Based on the initial point, the srand() function generates a unique series of pseudo-random numbers.
Note that you must use a rand() function to use a srand() function. You require the srand() function when you want to set the seed’s value only once in a program to produce various results of random integers (before calling the rand() function).
void srand(unsigned int) |
Here the seed is an integer value that determines a seed for a new series of pseudo-random numbers. The srand() function is called the seed for the rand() function. It doesn’t have a return value.
rand() | srand() |
The rand() function generates random numbers in C. | The srand() function initialises the seed value of PRNG. |
You can call it any number of times | You can only call it once to check the random number. |
It doesn’t accept any parameters. | It accepts the value that works as a seed in the random number generator. |
The return values contain random numbers whenever you call rand(). | No return value exists in srand() in C. |
The following example program generates a random number using C's rand() function.
#include <stdio.h> |
Output |
In the above example, the random number generation remains unchanged after each execution. The reason is the srand() function’s value is 1.
If you want to generate different random numbers, you can use the following example.
Here’s the code for a random number generator in C that generates random numbers on every execution using srand() in C.
#include <stdio.h> |
In the above example, the time() function (from time.h library) obtains a different seed value (on each execution) depending on the current time. Passing ‘time(NULL)’ as the argument to the srand() function provides the number of seconds passed since the Unix timestamp. So, it provides a different seed value on each execution.
The for loop generates and prints three random numbers. Whenever a loop iterates, a new random number is generated, and its output is printed through printf() function. Specifying a range helps you to customise the random number generator in C within a range.
Output |
The value generated by the random number generator function is an integer which can be extremely long. Hence, you can use float or double values. The method to generate the random float value is the same as for generating the integer value. However, the only difference is that you have to explicitly define that the value you expect from the rand() function must be float. Usually, the float value occupies more storage space than the short int.
Here’s the syntax to generate the random float value:
((float)rand()/(float)(RAND_MAX)) |
Program to generate random float number:
#include <stdio.h> |
Output |
In the above example, srand(time(NULL)) seeds the random number generator with the existing time. Hence, it always generates random sequences on every program execution. Dividing (float)rand() function by RAND_MAX gives you a floating-point random number between 0 and 1. The printf() function prints the output random float number.
Here's an example program to generate random numbers between 0 and 1.
#include <iostream> |
In the above example, srand() function with a varying seed value is used to generate various random numbers between 0 and 1 in C++. The current time is used as the seed value.
The for loop generates three different random numbers between 0 and 1. This is possible because the program divides rand() by RAND_MAX. So, it brings the random value in the range of 0 to 1. The float variable stores the result. The std::cout prints the output random numbers.
Output |
Here’s a program to generate random number in C between 1 to 10.
#include <iostream> |
Output |
In the above program for a random number generator in C++, srand(time(NULL)) seeds the random number generator with the current time. The above program for generate random number in C between 1 to 10 provides a unique result on every execution.
The rand() function will generate a random number in the range of 0 to RAND_MAX. The modulus operator % with 10 provides the result in the range of 0 to 9. The addition of 1 to the result modifies the range to 1 to 10. The std::cout prints the output random number.
By applying the same logic, you can generate a random number in C between 1 and 100 and also a random number in C between 10 and 100.
To sum up, understanding and utilising the random number generator in C allows us to introduce randomness into our programs, enabling a wide range of applications such as simulations, games, and encryption algorithms.
We hope our tutorial will help you analyse random number generation in C to implement it at the right place for optimum efficiency. Along with going through this tutorial, strengthening your technical skills is another aspect that aspirants must explore, and this is what upGrad encourages!
upGrad’s Master of Science in Computer Science, provided by Liverpool John Moores University, is an excellent course to fuel your career advancement in the tech industry. Providing prominent aspects like expert faculty guidance, live sessions, AI-powered learning sessions, real-life projects and more, upGrad is ready to skyrocket your growth in STEM!
Enroll now to start your journey!
Q. What is the need to generate random numbers?
Random numbers are useful in probability theory, statistical analysis, contemporary computer simulations, cryptocurrency wallets, and digital cryptography.
Q. How can you generate 1000 random numbers in C?
You need to evaluate a function rand() % 1000 that generates random numbers between 1 to 1000. It returns a value between [0,999]. If you want to get a value between [1, 1000], you will add 1 to the modulus value, i.e., rand()%1000 + 1/.
Q. What is a true random number generator?
A true random number generator (TRNG) is a device or function that works on an unpredictable physical phenomenon known as an entropy source. It generates non-deterministic data like a sequence of numbers to seed security algorithms.
Q. What is the difference between PRNG and TRNG?
While TRNG is a non-deterministic random number generator, PRNG is a deterministic one. PRNG employs methods based on a brief beginning value to create a long-length random number. TRNG creates random numbers by utilising the randomness of natural occurrences. Because it is impartial, unpredictable, and independent, the generated random number is known as a real random number.
Take a Free C Programming Quiz
Answer quick questions and assess your C programming knowledge
Author
Start Learning For Free
Explore Our Free Software Tutorials and Elevate your Career.
Talk to our experts. We are available 7 days a week, 9 AM to 12 AM (midnight)
Indian Nationals
1800 210 2020
Foreign Nationals
+918045604032
1.The above statistics depend on various factors and individual results may vary. Past performance is no guarantee of future results.
2.The student assumes full responsibility for all expenses associated with visas, travel, & related costs. upGrad does not provide any a.