Ignore:
Timestamp:
11/30/19 01:30:22 (4 years ago)
Author:
Maciej Komosinski
Message:

Replaced #defined macros for popular random-related operations with functions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpp/frams/genetics/fL/fL_oper.cpp

    r853 r896  
    133133                if (newword->name.startsWith("rot"))
    134134                {
    135                         double rot = 2 * rnd01;
     135                        double rot = rndDouble(2);
    136136                        MathEvaluation *eval = new MathEvaluation(0);
    137137                        eval->convertString(SString::valueOf(rot).c_str());
     
    149149                {
    150150                        MathEvaluation *eval = new MathEvaluation(0);
    151                         eval->convertString(SString::valueOf(2 * rnd01 - 1).c_str());
     151                        eval->convertString(SString::valueOf(rndDouble(2) - 1).c_str());
    152152                        newword->parevals[0] = eval;
    153153                }
     
    171171        else
    172172        {
    173                 int rid = randomN(creature->rules.size());
     173                int rid = rndUint(creature->rules.size());
    174174                list = &creature->rules[rid]->objsucc;
    175175                numparams = creature->rules[rid]->objpred->npar;
     
    183183        if (method == FL_ADD_OTHER && creature->builtincount < (int)creature->words.size())
    184184        {
    185                 return creature->words[creature->wordnames[creature->builtincount + randomN((int)creature->words.size() - creature->builtincount)]];
     185                return creature->words[creature->wordnames[creature->builtincount + rndUint((int)creature->words.size() - creature->builtincount)]];
    186186        }
    187187        else
     
    209209                case FL_ADD_ROT:
    210210                {
    211                         int rottype = randomN(3);
     211                        int rottype = rndUint(3);
    212212                        switch (rottype)
    213213                        {
     
    287287                case FL_CHG_ITER:
    288288                {
    289                         if (randomN(2) == 0)
     289                        if (rndUint(2) == 0)
    290290                        {
    291291                                creature->time = creature->time + iterchangestep <= ExtValue::getDouble(FL_MAXITER) ?
     
    303303                        if (creature->rules.size() > 0)
    304304                        {
    305                                 int ruleid = randomN(creature->rules.size());
     305                                int ruleid = rndUint(creature->rules.size());
    306306                                if (!creature->rules[ruleid]->condeval)
    307307                                {
     
    340340                        if (wordswithnorules.size() > 0)
    341341                        {
    342                                 int predid = randomN(wordswithnorules.size());
     342                                int predid = rndUint(wordswithnorules.size());
    343343                                fL_Rule *newrule = new fL_Rule(0,0);
    344344                                fL_Word *pred = new fL_Word();
     
    352352                        else if (creature->rules.size() > 0)
    353353                        {
    354                                 int ruleid = randomN(creature->rules.size());
     354                                int ruleid = rndUint(creature->rules.size());
    355355                                fL_Rule *newrule = new fL_Rule(0, 0);
    356356                                fL_Word *pred = new fL_Word();
     
    392392                        if (creature->countDefinedWords() <= maxdefinedwords)
    393393                        {
    394                                 int npar = randomN(ExtValue::getInt(FL_MAXPARAMS, false));
     394                                int npar = rndUint(ExtValue::getInt(FL_MAXPARAMS, false));
    395395                                for (int i = 0; i < maxdefinedwords; i++)
    396396                                {
     
    421421                                if (list->size() > 1)
    422422                                {
    423                                         int rndid = randomN(list->size() - 1);
     423                                        int rndid = rndUint(list->size() - 1);
    424424                                        int j = 0;
    425425                                        std::list<fL_Word *>::iterator it = list->begin();
     
    455455                        else
    456456                        {
    457                                 int rndid = randomN(list->size());
     457                                int rndid = rndUint(list->size());
    458458                                std::list<fL_Word *>::iterator it = list->begin();
    459459                                std::advance(it, rndid);
     
    482482                        int tmp = 0;
    483483                        std::list<fL_Word *> *list = selectRandomSequence(creature, numpars, tmp);
    484                         int rndid = randomN(list->size());
     484                        int rndid = rndUint(list->size());
    485485                        std::list<fL_Word *>::iterator it = list->begin();
    486486                        std::advance(it, rndid);
     
    512512                                fL_Branch *start = new fL_Branch(fL_Branch::BranchType::OPEN, 0, 0);
    513513                                list->insert(it, start);
    514                                 int rottype = randomN(2);
     514                                int rottype = rndUint(2);
    515515                                switch (rottype)
    516516                                {
     
    531531                        int tmp = 0;
    532532                        std::list<fL_Word *> *list = selectRandomSequence(creature, numpars, tmp);
    533                         int rndid = randomN(list->size());
     533                        int rndid = rndUint(list->size());
    534534                        std::list<fL_Word *>::iterator selectedword = list->begin();
    535535                        std::advance(selectedword, rndid);
     
    545545                                int numpars = 0;
    546546                                std::list<fL_Word *> *list = selectRandomSequence(creature, numpars, tmp);
    547                                 int rndid = randomN(list->size());
     547                                int rndid = rndUint(list->size());
    548548                                std::list<fL_Word *>::iterator it = list->begin();
    549549                                std::advance(it, rndid);
     
    577577                                        if (available.size() > 0)
    578578                                        {
    579                                                 int newnameid = randomN(available.size());
     579                                                int newnameid = rndUint(available.size());
    580580                                                (*selectedword)->name = available[newnameid]->name;
    581581                                        }
     
    593593                                if ((*selectedword)->npar > 0)
    594594                                {
    595                                         int randeval = randomN((*selectedword)->npar);
     595                                        int randeval = rndUint((*selectedword)->npar);
    596596                                        Param par((*selectedword)->tab, (*selectedword)->data);
    597597                                        if ((*selectedword)->builtin && (*selectedword)->name == "N"
     
    614614                                                        if (w->npar > 0)
    615615                                                        {
    616                                                                 int rndattr = randomN(w->npar);
     616                                                                int rndattr = rndUint(w->npar);
    617617                                                                if (!w->parevals[rndattr])
    618618                                                                {
     
    638638                                                                if (w->npar > 0)
    639639                                                                {
    640                                                                         int rndattr = randomN(w->npar);
     640                                                                        int rndattr = rndUint(w->npar);
    641641                                                                        for (int i = 0; i < w->npar; i++)
    642642                                                                        {
     
    752752                for (int i = 0; i < numselrules; i++)
    753753                {
    754                         int rulid = randomN(from->rules.size());
     754                        int rulid = rndUint(from->rules.size());
    755755                        fL_Rule *rul = from->rules[rulid];
    756756                        fL_Rule *newrule = new fL_Rule(0, 0);
     
    841841        creature2template->parseGenotype(g2);
    842842
    843         int numselrules = 1 + randomN(XOVER_MAX_MIGRATED_RULES);
     843        int numselrules = 1 + rndUint(XOVER_MAX_MIGRATED_RULES);
    844844        numselrules = numselrules < (int)creature1->rules.size() ? numselrules : (int)creature1->rules.size();
    845845
    846846        migrateRandomRules(creature1template, creature2, numselrules);
    847847
    848         numselrules = 1 + randomN(XOVER_MAX_MIGRATED_RULES);
     848        numselrules = 1 + rndUint(XOVER_MAX_MIGRATED_RULES);
    849849        numselrules = numselrules < (int)creature1->rules.size() ? numselrules : (int)creature1->rules.size();
    850850
Note: See TracChangeset for help on using the changeset viewer.