[Gnucash-changes] make random-numeric code more human-readable
Linas Vepstas
linas at cvs.gnucash.org
Sun Jun 27 13:39:25 EDT 2004
Log Message:
-----------
make random-numeric code more human-readable
Modified Files:
--------------
gnucash/src/engine/test-core:
test-engine-stuff.c
Revision Data
-------------
Index: test-engine-stuff.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/test-core/test-engine-stuff.c,v
retrieving revision 1.67
retrieving revision 1.68
diff -Lsrc/engine/test-core/test-engine-stuff.c -Lsrc/engine/test-core/test-engine-stuff.c -u -r1.67 -r1.68
--- src/engine/test-core/test-engine-stuff.c
+++ src/engine/test-core/test-engine-stuff.c
@@ -142,25 +142,24 @@
return ret;
}
+#define RAND_IN_RANGE(X) ((X*((gint64) (rand()+1)))/RAND_MAX)
+
gnc_numeric
get_random_gnc_numeric(void)
{
- gint64 deno = rand();
- gint64 numer = get_random_gint64();
+ gint64 numer = get_random_gint64()/10;
+ gint64 deno;
-#if 1
if (RAND_MAX/2 < rand())
{
- gint64 norm = RAND_MAX / 2000;
- /* Random number between 1 and 2000 */
- deno /= norm;
- deno += 1;
+ /* Random number between 1 and 6000 */
+ deno = RAND_IN_RANGE(6000ULL);
}
else
{
- gint64 norm = RAND_MAX / 8;
- /* multiple of 10, between 1 and 100 million */
- norm = deno / norm;
+ gint64 norm = RAND_IN_RANGE (10ULL);
+
+ /* multiple of 10, between 1 and 10 000 million */
deno = 1;
while (norm)
{
@@ -168,7 +167,6 @@
norm --;
}
}
-#endif
return gnc_numeric_create(numer, deno);
}
More information about the gnucash-changes
mailing list