-{
- double speed = 0.0;
- const char *p, *q;
- char *generator;
- random_data_t random = NULL;
- /* randomness is inserted like this: power="$rand(my_random)" */
- if (((p = strstr(str_speed, "$rand(")) != NULL)
- && ((q = strstr(str_speed, ")")) != NULL)) {
- if (p < q) {
- generator = xbt_malloc(q - (p + 6) + 1);
- memcpy(generator, p + 6, q - (p + 6));
- generator[q - (p + 6)] = '\0';
- random = xbt_dict_get_or_null(random_data_list, generator);
- xbt_assert(random, "Random generator %s undefined", generator);
- speed = random_generate(random);
- }
- } else {
- speed = surf_parse_get_speed(str_speed);
- }
- return speed;