SG_BEGIN_DECL()
-typedef enum { NONE, DRAND48, RAND, RNGSTREAM } Generator;
+typedef enum { NONE, DRAND48, RAND, RNGSTREAM } e_random_generator_t;
typedef struct random_data_desc {
long int seed;
double max, min;
double mean, std; /* note: mean and standard deviation are normalized */
- Generator generator;
+ e_random_generator_t generator;
} s_random_data_t, *random_data_t;
XBT_PUBLIC_DATA(xbt_dict_t) random_data_list;
XBT_PUBLIC(double) random_generate(random_data_t random);
-XBT_PUBLIC(random_data_t) random_new(Generator generator, long int seed,
+XBT_PUBLIC(random_data_t) random_new(e_random_generator_t generator,
+ long int seed,
double min, double max, double mean,
double stdDeviation);
#endif
-static double custom_random(Generator generator, long int *seed)
+static double custom_random(e_random_generator_t generator, long int *seed)
{
switch (generator) {
return X * (random->max - random->min) + random->min;
}
-random_data_t random_new(Generator generator, long int seed,
+random_data_t random_new(e_random_generator_t generator, long int seed,
double min, double max, double mean, double std)
{
random_data_t random = xbt_new0(s_random_data_t, 1);
int start, end;
xbt_dynar_t radical_ends;
- random->generator = A_surfxml_random_generator;
+ switch (A_surfxml_random_generator) {
+ case AU_surfxml_random_generator:
+ case A_surfxml_random_generator_NONE:
+ random->generator = NONE;
+ break;
+ case A_surfxml_random_generator_DRAND48:
+ random->generator = DRAND48;
+ break;
+ case A_surfxml_random_generator_RAND:
+ random->generator = RAND;
+ break;
+ case A_surfxml_random_generator_RNGSTREAM:
+ random->generator = RNGSTREAM;
+ break;
+ default:
+ surf_parse_error("Invalid random generator");
+ break;
+ }
random->seed = seed;
random->min = min;
random->max = max;
XBT_DEBUG
("id = '%s' min = '%f' max = '%f' mean = '%f' std_deviatinon = '%f' generator = '%d' seed = '%ld' radical = '%s'",
random_id, random->min, random->max, random->mean, random->std,
- random->generator, random->seed, random_radical);
+ (int)random->generator, random->seed, random_radical);
if (!random_value)
random_value = xbt_dict_new_homogeneous(free);
return power_scale;
}
-double random_min, random_max, random_mean, random_std_deviation,
- random_generator;
+double random_min, random_max, random_mean, random_std_deviation;
+e_random_generator_t random_generator;
char *random_id;
static void init_randomness(void)
random_max = surf_parse_get_double(A_surfxml_random_max);
random_mean = surf_parse_get_double(A_surfxml_random_mean);
random_std_deviation = surf_parse_get_double(A_surfxml_random_std_deviation);
- random_generator = A_surfxml_random_generator;
+ switch (A_surfxml_random_generator) {
+ case AU_surfxml_random_generator:
+ case A_surfxml_random_generator_NONE:
+ random_generator = NONE;
+ break;
+ case A_surfxml_random_generator_DRAND48:
+ random_generator = DRAND48;
+ break;
+ case A_surfxml_random_generator_RAND:
+ random_generator = RAND;
+ break;
+ case A_surfxml_random_generator_RNGSTREAM:
+ random_generator = RNGSTREAM;
+ break;
+ default:
+ surf_parse_error("Invalid random generator");
+ break;
+ }
}
static void add_randomness(void)