xref: /nrf52832-nimble/rt-thread/examples/libc/rand.c (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero /*
2*10465441SEvalZero  * rand.c
3*10465441SEvalZero  *
4*10465441SEvalZero  *  Created on: 2010-11-17
5*10465441SEvalZero  *      Author: bernard
6*10465441SEvalZero  */
7*10465441SEvalZero #include <stdio.h>
8*10465441SEvalZero #include <stdlib.h>
9*10465441SEvalZero #include <finsh.h>
10*10465441SEvalZero 
libc_rand(void)11*10465441SEvalZero int libc_rand(void)
12*10465441SEvalZero {
13*10465441SEvalZero 	int i1, i2;
14*10465441SEvalZero 	int j1, j2;
15*10465441SEvalZero 
16*10465441SEvalZero 	/* The C standard says that "If rand is called before any calls to
17*10465441SEvalZero 	 srand have been made, the same sequence shall be generated as
18*10465441SEvalZero 	 when srand is first called with a seed value of 1." */
19*10465441SEvalZero 	i1 = rand();
20*10465441SEvalZero 	i2 = rand();
21*10465441SEvalZero 	srand(1);
22*10465441SEvalZero 	j1 = rand();
23*10465441SEvalZero 	j2 = rand();
24*10465441SEvalZero 	if (i1 < 0 || i2 < 0 || j1 < 0 || j2 < 0)
25*10465441SEvalZero 	{
26*10465441SEvalZero 		puts("Test FAILED!");
27*10465441SEvalZero 	}
28*10465441SEvalZero 	if (j1 == i1 && j2 == i2)
29*10465441SEvalZero 	{
30*10465441SEvalZero 		puts("Test succeeded.");
31*10465441SEvalZero 		return 0;
32*10465441SEvalZero 	}
33*10465441SEvalZero 	else
34*10465441SEvalZero 	{
35*10465441SEvalZero 		if (j1 != i1)
36*10465441SEvalZero 			printf("%d != %d\n", j1, i1);
37*10465441SEvalZero 		if (j2 != i2)
38*10465441SEvalZero 			printf("%d != %d\n", j2, i2);
39*10465441SEvalZero 		puts("Test FAILED!");
40*10465441SEvalZero 		return 1;
41*10465441SEvalZero 	}
42*10465441SEvalZero }
43*10465441SEvalZero FINSH_FUNCTION_EXPORT(libc_rand, rand test for libc);
44