void test_field_process_quarters_unmasked_border(void) { enum { max_size = 15, niter = 100 }; gdouble eps = 1e-12; GRand *rng = g_rand_new_with_seed(42); for (guint iter = 0; iter < niter; iter++) { guint xres = g_rand_int_range(rng, 1, max_size); guint yres = g_rand_int_range(rng, 1, max_size); guint width = g_rand_int_range(rng, 1, xres+1); guint height = g_rand_int_range(rng, 1, yres+1); guint col = g_rand_int_range(rng, 0, xres-width+1); guint row = g_rand_int_range(rng, 0, yres-height+1); GwyFieldPart fpart = { col, row, width, height }; GwyField *field = gwy_field_new_sized(xres, yres, FALSE); gboolean useallfunc = g_rand_boolean(rng); field_randomize(field, rng); gdouble result = 0.0; gwy_field_process_quarters(field, &fpart, NULL, 0, TRUE, sum_quarters, useallfunc ? sum_allquarters : NULL, &result); gdouble reference = 0.0; for (guint i = 0; i < height; i++) { for (guint j = 0; j < width; j++) { reference += 4.0*gwy_field_index(field, col + j, row + i); } } gwy_assert_floatval(result, reference, eps); g_object_unref(field); } g_rand_free(rng); }
void generate_drug () { GRand *rand; gint i, j, divisor; rand = g_rand_new (); for (i = 0; i < DRUG_NUM; i++) for (j = 0; j < CITY_NUM; j++) { drug_table[i][j].available = g_rand_boolean (rand); if (drug_table[i][j].available) { drug_table[i][j].qty = g_rand_int_range (rand, 0, 10); if (drug_table[i][j].qty > 0) divisor = drug_table[i][j].qty; else divisor = g_rand_int_range (rand, 1, 10); drug_table[i][j].price = ((double) 10 / divisor) * g_rand_double_range (rand, 0.1, 1.0) * drug_price[i]; } } g_rand_free (rand); }
static gint random_integer(GRand *rng) { gdouble x = -5.0*log(g_rand_double(rng)); if (g_rand_boolean(rng)) x = -x; return (gint)gwy_round(x); }
void test_field_process_quarters_masked_noborder(void) { enum { max_size = 15, niter = 100 }; gdouble eps = 1e-12; GRand *rng = g_rand_new_with_seed(42); for (guint iter = 0; iter < niter; iter++) { guint xres = g_rand_int_range(rng, 1, max_size); guint yres = g_rand_int_range(rng, 1, max_size); guint width = g_rand_int_range(rng, 1, xres+1); guint height = g_rand_int_range(rng, 1, yres+1); guint col = g_rand_int_range(rng, 0, xres-width+1); guint row = g_rand_int_range(rng, 0, yres-height+1); GwyFieldPart fpart = { col, row, width, height }; GwyField *field = gwy_field_new_sized(xres, yres, FALSE); gboolean useallfunc = g_rand_boolean(rng); field_randomize(field, rng); GwyMaskField *mask = random_mask_field_prob(xres, yres, rng, 0.5); gdouble result = 0.0, result0 = 0.0, result1 = 0.0; gwy_field_process_quarters(field, &fpart, mask, GWY_MASK_IGNORE, FALSE, sum_quarters, useallfunc ? sum_allquarters : NULL, &result); gwy_field_process_quarters(field, &fpart, mask, GWY_MASK_EXCLUDE, FALSE, sum_quarters, useallfunc ? sum_allquarters : NULL, &result0); gwy_field_process_quarters(field, &fpart, mask, GWY_MASK_INCLUDE, FALSE, sum_quarters, useallfunc ? sum_allquarters : NULL, &result1); gdouble reference = 0.0, reference0 = 0.0, reference1 = 0.0; for (guint i = 0; i < height; i++) { for (guint j = 0; j < width; j++) { guint wh = (col + j > 0) + (col + j < xres-1); guint wv = (row + i > 0) + (row + i < yres-1); gdouble v = wh*wv*gwy_field_index(field, col + j, row + i); reference += v; if (gwy_mask_field_get(mask, col + j, row + i)) reference1 += v; else reference0 += v; } } gwy_assert_floatval(result, reference, eps); gwy_assert_floatval(result0, reference0, eps); gwy_assert_floatval(result1, reference1, eps); g_object_unref(mask); g_object_unref(field); } g_rand_free(rng); }
static void is_fake_plugin_activate(PeasActivatable *activatable) { IsFakePlugin *self = IS_FAKE_PLUGIN(activatable); IsFakePluginPrivate *priv = self->priv; int i; int n_fans = 0; /* generate some fake sensors */ for (i = 0; i < 5; i++) { gchar *path; gchar *label; IsSensor *sensor; path = g_strdup_printf("fake/sensor%d", i); if (g_rand_boolean(priv->rand)) { n_fans++; sensor = is_fan_sensor_new(path); is_sensor_set_low_value(sensor, 100.0); is_sensor_set_high_value(sensor, 5000.0); label = g_strdup_printf(_("Fake Fan %d"), n_fans); } else { sensor = is_temperature_sensor_new(path); is_sensor_set_icon(sensor, IS_STOCK_CPU); label = g_strdup_printf(_("Fake CPU %d"), i - n_fans + 1); } /* no decimal places to display */ is_sensor_set_digits(sensor, 0); is_sensor_set_label(sensor, label); /* connect to update-value signal */ g_signal_connect(sensor, "update-value", G_CALLBACK(update_sensor_value), self); is_manager_add_sensor(is_application_get_manager(priv->application), sensor); g_free(label); g_free(path); } }
static GSList* gslist_merge_random (GSList *l1, GSList *l2) { GSList *next, *result = NULL; GRand *r = oio_ext_local_prng (); while (l1 || l2) { if (l1 && l2) { if (g_rand_boolean(r)) PREPEND(result,l1); else PREPEND(result,l2); } else { if (l1) PREPEND(result,l1); else PREPEND(result,l2); } } return result; }
/** * crank_bench_run_rand_boolean: (skip) * @run: A benchmark run. * * Returns random boolean; %TRUE or %FALSE randomly. * * #CrankBenchRun will hold a #GRand for you. * * Returns: A random boolean. */ gboolean crank_bench_run_rand_boolean (CrankBenchRun *run) { return g_rand_boolean (run->random); }
int construct_feasible_solutions(wctproblem *problem) { int val = 0; int iterations = 0; wctdata *pd = &(problem->root_pd); wctparms *parms = &(problem->parms) ; SS *scatter_search = &(problem->scatter_search); CCutil_timer *timer = &(problem->tot_scatter_search); GRand *rand1 = g_rand_new_with_seed(1984); GRand *rand2 = g_rand_new_with_seed(1654651); CCutil_start_timer(timer); val = SSproblem_definition(scatter_search, 10, 8, parms->scatter_search_cpu_limit, parms->combine_method, pd->njobs, pd->nmachines, pd->jobarray, problem->global_lower_bound); CCcheck_val_2(val, "Failed in SSproblem_definition"); while (scatter_search->p->PSize < parms->nb_feas_sol) { iterations++; solution *new_sol = (solution *) NULL; new_sol = new_sol_init(pd->nmachines, pd->njobs); CCcheck_NULL(new_sol, "Failed to allocate") if (problem->status == no_sol) { construct_wspt(pd->jobarray, pd->njobs, pd->nmachines, new_sol); problem->status = feasible; } else { if (g_rand_boolean(rand1)) { random_assignment(pd->jobarray, pd->njobs, pd->nmachines, new_sol, rand2); } else { random_rcl_assignment(pd->jobarray, pd->njobs, pd->nmachines, new_sol, rand2); } } val = add_feasible_solution(problem, new_sol); CCcheck_val(val, "Failed in add_feasible_solution"); } CCutil_suspend_timer(timer); printf("We needed %f seconds to construct %d solutions in %d iterations\n", timer->cum_zeit, parms->nb_feas_sol, iterations); printf("upperbound = %d, lowerbound = %d\n", problem->global_upper_bound, problem->global_lower_bound); CCutil_resume_timer(timer); if (parms->scatter_search) { SSCreate_refset(scatter_search); scatter_search->upperbound = problem->global_upper_bound; if (parms->combine_method) { SSrun_scatter_search(scatter_search, &(problem->tot_scatter_search)); } else { SSrun_scatter_searchPR(scatter_search, & (problem->tot_scatter_search)); } for (unsigned i = 0; i < scatter_search->rs->list1->len ; i++) { solution *new_sol = (solution *)g_ptr_array_index(scatter_search->rs->list1 , i); partlist_to_Scheduleset(new_sol->part, pd->nmachines, pd->njobs, &(pd->newsets), &(pd->nnewsets)); add_newsets(pd); } } CLEAN: g_rand_free(rand1); g_rand_free(rand2); CCutil_stop_timer(&(problem->tot_scatter_search), 0); return val; }