コード例 #1
0
ファイル: field-stats.c プロジェクト: svn2github/gwyddion
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);
}
コード例 #2
0
ファイル: druxlord.c プロジェクト: ajhwb/druxlord
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);
}
コード例 #3
0
ファイル: int-set.c プロジェクト: svn2github/gwyddion
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);
}
コード例 #4
0
ファイル: field-stats.c プロジェクト: svn2github/gwyddion
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);
}
コード例 #5
0
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);
	}
}
コード例 #6
0
ファイル: ext.c プロジェクト: carriercomm/oio-sds
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;
}
コード例 #7
0
ファイル: crankbenchrun.c プロジェクト: WSID/crank-system
/**
 * 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);
}
コード例 #8
0
ファイル: greedy.c プロジェクト: DanielKowalczyk1984/WCTimpl
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;
}