Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRené Scharfe <l.s.r@web.de>2021-10-08 07:04:42 +0300
committerJunio C Hamano <gitster@pobox.com>2021-10-08 20:04:56 +0300
commitc90cfc225baaf64af311f7e2953267e4de636205 (patch)
tree8cf850790b14ef3266597bfd296212fa8bc2ebb2
parentafc72b5d3afa5537d38047c9dffb81b50518e19d (diff)
test-mergesort: use repeatable random numbers
Use MINSTD to generate pseudo-random numbers consistently instead of using rand(3), whose output can vary from system to system, and reset its seed before filling in the test values. This gives repeatable results across versions and systems, which simplifies sharing and comparing of results between developers. Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--t/helper/test-mergesort.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/t/helper/test-mergesort.c b/t/helper/test-mergesort.c
index 43ec74e2d3..ebf68f7de8 100644
--- a/t/helper/test-mergesort.c
+++ b/t/helper/test-mergesort.c
@@ -2,6 +2,12 @@
#include "cache.h"
#include "mergesort.h"
+static uint32_t minstd_rand(uint32_t *state)
+{
+ *state = (uint64_t)*state * 48271 % 2147483647;
+ return *state;
+}
+
struct line {
char *text;
struct line *next;
@@ -60,8 +66,9 @@ static void dist_sawtooth(int *arr, int n, int m)
static void dist_rand(int *arr, int n, int m)
{
int i;
+ uint32_t seed = 1;
for (i = 0; i < n; i++)
- arr[i] = rand() % m;
+ arr[i] = minstd_rand(&seed) % m;
}
static void dist_stagger(int *arr, int n, int m)
@@ -81,8 +88,9 @@ static void dist_plateau(int *arr, int n, int m)
static void dist_shuffle(int *arr, int n, int m)
{
int i, j, k;
+ uint32_t seed = 1;
for (i = j = 0, k = 1; i < n; i++)
- arr[i] = (rand() % m) ? (j += 2) : (k += 2);
+ arr[i] = minstd_rand(&seed) % m ? (j += 2) : (k += 2);
}
#define DIST(name) { #name, dist_##name }