Index: cpp/frams/genetics/f4/f4_general.cpp
===================================================================
--- cpp/frams/genetics/f4/f4_general.cpp	(revision 857)
+++ cpp/frams/genetics/f4/f4_general.cpp	(revision 896)
@@ -1210,5 +1210,5 @@
 	int n = count();
 	// pick a random node, between 0 and n-1
-	return ordNode(randomN(n));
+	return ordNode(rndUint(n));
 }
 
@@ -1355,5 +1355,5 @@
 {
 	int i, j, res, t;
-	char tc1, tc2, tc3; // tc3 is only to ensure that in the end  of neuron parameter definition
+	char tc1, tc2, tc3; // tc3 is only to ensure that neuron parameter definition is completed
 	int relfrom;
 	double w;
Index: cpp/frams/genetics/f4/f4_oper.cpp
===================================================================
--- cpp/frams/genetics/f4/f4_oper.cpp	(revision 857)
+++ cpp/frams/genetics/f4/f4_oper.cpp	(revision 896)
@@ -158,5 +158,5 @@
 			// "X>" or "N>"
 			f4_node *n5 = NULL;
-			double pr = rnd01;
+			double pr = rndDouble(1);
 			pr -= 0.5;
 			if (pr < 0) n5 = new f4_node('X', n2, n2->pos);
@@ -204,5 +204,5 @@
 			n1->parent = n2;
 			// now with 50% chance swap children
-			if (randomN(2) == 0)
+			if (rndUint(2) == 0)
 			{
 				n3 = n2->child;
@@ -275,5 +275,5 @@
 			// choose a simple node from ADD_SIMPLE_CODES
 			n1->parent->removeChild(n1);
-			//f4_node *n2 = new f4_node(ADD_SIMPLE_CODES[randomN(strlen(ADD_SIMPLE_CODES))], n1->parent, n1->parent->pos);
+			//f4_node *n2 = new f4_node(ADD_SIMPLE_CODES[rndUint(strlen(ADD_SIMPLE_CODES))], n1->parent, n1->parent->pos);
 			int modifierid = GenoOperators::getRandomChar(all_modifiers, excluded_modifiers.c_str());
 			f4_node *n2 = new f4_node(all_modifiers[modifierid], n1->parent, n1->parent->pos);
@@ -333,5 +333,5 @@
 				n2->removeChild(n1);
 				// n1 has two children. pick one randomly 50-50, destroy other
-				if (randomN(2) == 0)
+				if (rndUint(2) == 0)
 				{
 					n1->child->parent = n2;
@@ -429,5 +429,5 @@
 
 	// 35% chance one of *GTS
-	prob1 = rnd01;
+	prob1 = rndDouble(1);
 	prob1 -= 0.35f;
 	if (prob1 < 0)
@@ -468,5 +468,5 @@
 	case 0: // change type
 		// 80% for link, 20% for random sensor
-		if (rnd01 < 0.2f)
+		if (rndDouble(1) < 0.2f)
 		{
 			cl = GenoOperators::getRandomNeuroClassWithOutputAndNoInputs();
@@ -497,6 +497,6 @@
 void Geno_f4::nparNodeMakeRandom(f4_node *nn) const
 {
-	int sign = (int)(2.0f * rnd01);
-	int param = (int)(3.0f * rnd01);
+	int sign = (int)rndDouble(2);
+	int param = (int)rndDouble(3);
 	if (param > 2) param = 2;
 	nn->l1 = sign;
@@ -512,5 +512,5 @@
 	// change count
 	count = nn->i1;
-	prob1 = rnd01;
+	prob1 = rndDouble(1);
 	if (prob1 < 0.5f) count++;
 	else count--;
@@ -699,6 +699,6 @@
 	// decide amounts of crossover, 0.25-0.75
 	// adam: seems 0.1-0.9 -- MacKo
-	chg1 = 0.1f + 0.8f*rnd01;
-	chg2 = 0.1f + 0.8f*rnd01;
+	chg1 = 0.1 + rndDouble(0.8);
+	chg2 = 0.1 + rndDouble(0.8);
 
 	copy1 = root1.duplicate();
Index: cpp/frams/genetics/f9/f9_oper.cpp
===================================================================
--- cpp/frams/genetics/f9/f9_oper.cpp	(revision 857)
+++ cpp/frams/genetics/f9/f9_oper.cpp	(revision 896)
@@ -5,5 +5,5 @@
 #include "f9_oper.h"
 #include "f9_conv.h"
-#include <common/nonstd.h> //randomN, rnd01
+#include <common/nonstd.h> //rndUint, rnd01
 
 
@@ -55,21 +55,21 @@
 	for (int i = 0; i < len; i++)
 	{
-		if (rnd01 < mut_prob) //normalize prob with the length of the genotype
+		if (rndDouble(1) < mut_prob) //normalize prob with the length of the genotype
 		{
 			char oldgene = gene[i];
-			gene[i] = turtle_commands_f9[randomN(symbols)];
+			gene[i] = turtle_commands_f9[rndUint(symbols)];
 			if (gene[i] != oldgene) changes++;
 		}
 	}
 
-	if (rnd01 < mut_prob) //add or delete a random char
+	if (rndDouble(1) < mut_prob) //add or delete a random char
 	{
 		SString newgeno(gene);
-		if (randomN(2) == 0) //add
+		if (rndUint(2) == 0) //add
 		{
 			int symbols = strlen(turtle_commands_f9);
-			int p = randomN(len + 1);  //random location
+			int p = rndUint(len + 1);  //random location
 			//printf("before add: %s\n",(const char*)newgeno);
-			newgeno = newgeno.substr(0, p) + SString(turtle_commands_f9 + randomN(symbols), 1) + newgeno.substr(p);
+			newgeno = newgeno.substr(0, p) + SString(turtle_commands_f9 + rndUint(symbols), 1) + newgeno.substr(p);
 			//printf("after add: %s\n",(const char*)newgeno);
 			changes++;
@@ -77,5 +77,5 @@
 		else if (len > 1) //delete
 		{
-			int p = randomN(len);  //random location
+			int p = rndUint(len);  //random location
 			//printf("before delete: %s\n",(const char*)newgeno);
 			newgeno = newgeno.substr(0, p) + newgeno.substr(p + 1);
@@ -95,6 +95,6 @@
 {
 	int len1 = strlen(g1), len2 = strlen(g2);
-	int p1 = randomN(len1);  //random cut point for first genotype
-	int p2 = randomN(len2);  //random cut point for second genotype
+	int p1 = rndUint(len1);  //random cut point for first genotype
+	int p2 = rndUint(len2);  //random cut point for second genotype
 	char *child1 = (char*)malloc(p1 + len2 - p2 + 1);
 	char *child2 = (char*)malloc(p2 + len1 - p1 + 1);
Index: cpp/frams/genetics/fB/fB_oper.cpp
===================================================================
--- cpp/frams/genetics/fB/fB_oper.cpp	(revision 857)
+++ cpp/frams/genetics/fB/fB_oper.cpp	(revision 896)
@@ -246,5 +246,5 @@
 	{
 		std::list<SString> tokenized = tokenizeSequence(line);
-		int rndid = randomN(tokenized.size()); // select random letter from genotype
+		int rndid = rndUint(tokenized.size()); // select random letter from genotype
 		// increment/decrement character - when overflow happens, this method
 		// uses reflect method
@@ -254,5 +254,5 @@
 		if ((*it).len() == 1)
 		{
-			if (randomN(2) == 0)
+			if (rndUint(2) == 0)
 			{
 				if ((*it)[0] == 'a') (*it).directWrite()[0] = 'b';
@@ -285,5 +285,5 @@
 		std::list<SString> tokenized = tokenizeSequence(line);
 		std::list<SString>::iterator it = tokenized.begin();
-		int rndid = randomN(tokenized.size()); // select random insertion point
+		int rndid = rndUint(tokenized.size()); // select random insertion point
 		std::advance(it, rndid);
 		NeuroClass *cls = getRandomNeuroClass();
@@ -306,9 +306,9 @@
 		chg = 1.0 / line.len();
 		std::list<SString> tokenized = tokenizeSequence(line);
-		int rndid = randomN(tokenized.size()); // select random insertion point
+		int rndid = rndUint(tokenized.size()); // select random insertion point
 		std::list<SString>::iterator it = tokenized.begin();
 		std::advance(it, rndid);
 		SString letter = "a";
-		letter.directWrite()[0] = 'a' + randomN(26);
+		letter.directWrite()[0] = 'a' + rndUint(26);
 		tokenized.insert(it, letter);
 		line = detokenizeSequence(&tokenized);
@@ -320,5 +320,5 @@
 		std::list<SString> tokenized = tokenizeSequence(line);
 		std::list<SString>::iterator it = tokenized.begin();
-		int rndid = randomN(tokenized.size()); // select random deletion point
+		int rndid = rndUint(tokenized.size()); // select random deletion point
 		std::advance(it, rndid);
 		tokenized.erase(it);
@@ -328,5 +328,5 @@
 	case FB_DUPLICATION:
 	{
-		int rndgene = randomN(fB_GenoHelpers::geneCount(line));
+		int rndgene = rndUint(fB_GenoHelpers::geneCount(line));
 		int start, end;
 		SString gene = fB_GenoHelpers::getGene(rndgene, line, start, end);
@@ -342,5 +342,5 @@
 		for (int i = 0; i < 4; i++)
 		{
-			cuts[i] = randomN(tokenized.size());
+			cuts[i] = rndUint(tokenized.size());
 		}
 		std::sort(cuts.begin(), cuts.end());
@@ -407,5 +407,5 @@
 	{
 		// get random gene from first parent
-		int choice = randomN(fB_GenoHelpers::geneCount(parent1));
+		int choice = rndUint(fB_GenoHelpers::geneCount(parent1));
 		int start, end;
 		SString gene = fB_GenoHelpers::getGene(choice, parent1, start, end);
@@ -414,5 +414,5 @@
 		chg2 = (float)parent2.len() / (float)child2.len();
 		// do the same for second parent
-		choice = randomN(fB_GenoHelpers::geneCount(parent2));
+		choice = rndUint(fB_GenoHelpers::geneCount(parent2));
 		gene = fB_GenoHelpers::getGene(choice, parent2, start, end);
 		child1 = gene + parent1;
@@ -428,5 +428,5 @@
 	//			int start, end;
 	//			SString gene = fB_GenoHelpers::getGene(i, parent1, start, end);
-	//			if (randomN(2) == 0)
+	//			if (rndUint(2) == 0)
 	//			{
 	//				child1 += gene;
@@ -445,5 +445,5 @@
 	//			int start, end;
 	//			SString gene = fB_GenoHelpers::getGene(i, parent2, start, end);
-	//			if (randomN(2) == 0)
+	//			if (rndUint(2) == 0)
 	//			{
 	//				child1 += gene;
@@ -474,5 +474,5 @@
 				i < fB_GenoHelpers::geneCountNoNested(parent2))
 			{
-				if (randomN(2) == 0)
+				if (rndUint(2) == 0)
 				{
 					to1 = fB_GenoHelpers::getNonNestedGene(i, parent1, start, end);
@@ -489,5 +489,5 @@
 			else if (i < fB_GenoHelpers::geneCountNoNested(parent1))
 			{
-				if (randomN(2) == 0)
+				if (rndUint(2) == 0)
 				{
 					to1 = fB_GenoHelpers::getNonNestedGene(i, parent1, start, end);
@@ -501,5 +501,5 @@
 			else // if (i < fB_GenoHelpers::geneCountNoNested(parent2))
 			{
-				if (randomN(2) == 0)
+				if (rndUint(2) == 0)
 				{
 					to1 = fB_GenoHelpers::getNonNestedGene(i, parent2, start, end);
Index: cpp/frams/genetics/fF/fF_oper.cpp
===================================================================
--- cpp/frams/genetics/fF/fF_oper.cpp	(revision 857)
+++ cpp/frams/genetics/fF/fF_oper.cpp	(revision 896)
@@ -1,9 +1,9 @@
 // This file is a part of Framsticks SDK.  http://www.framsticks.com/
-// Copyright (C) 1999-2018  Maciej Komosinski and Szymon Ulatowski.
+// Copyright (C) 1999-2019  Maciej Komosinski and Szymon Ulatowski.
 // See LICENSE.txt for details.
 
 #include "fF_oper.h"
 #include "fF_genotype.h"
-#include <common/nonstd.h> //randomN, rnd01
+#include <common/nonstd.h> //rndUint, rnd01
 
 
@@ -49,5 +49,5 @@
 	par.load(gene);
 	static const int propsToMutate[] = fF_PROPS_TO_MUTATE;
-	int which = randomN(ARRAY_LENGTH(propsToMutate));
+	int which = rndUint(ARRAY_LENGTH(propsToMutate));
 	bool mutated_ok = GenoOperators::mutatePropertyNaive(par.param, propsToMutate[which]);
 	if (mutated_ok)
Index: cpp/frams/genetics/fH/fH_oper.cpp
===================================================================
--- cpp/frams/genetics/fH/fH_oper.cpp	(revision 857)
+++ cpp/frams/genetics/fH/fH_oper.cpp	(revision 896)
@@ -107,5 +107,5 @@
 	for (unsigned int i = 0; i < parent1->sticks.size(); i++)
 	{
-		if (randomN(2) == 0)
+		if (rndUint(2) == 0)
 		{
 			child1->sticks.push_back(parent1->sticks[i]);
@@ -120,5 +120,5 @@
 	for (unsigned int i = 0; i < parent2->sticks.size(); i++)
 	{
-		if (randomN(2) == 0)
+		if (rndUint(2) == 0)
 		{
 			child1->sticks.push_back(parent2->sticks[i]);
@@ -140,5 +140,5 @@
 	for (unsigned int i = 0; i < parent1->neurons.size(); i++)
 	{
-		if ((randomN(2) == 0 || skip2) && !skip1)
+		if ((rndUint(2) == 0 || skip2) && !skip1)
 		{
 			child1->neurons.push_back(parent1->neurons[i]);
@@ -153,5 +153,5 @@
 	for (unsigned int i = 0; i < parent2->neurons.size(); i++)
 	{
-		if ((randomN(2) == 0 || skip2) && !skip1)
+		if ((rndUint(2) == 0 || skip2) && !skip1)
 		{
 			child1->neurons.push_back(parent2->neurons[i]);
@@ -166,5 +166,5 @@
 	for (unsigned int i = 0; i < parent1->connections.size(); i++)
 	{
-		if ((randomN(2) == 0 || skip2) && !skip1)
+		if ((rndUint(2) == 0 || skip2) && !skip1)
 		{
 			child1->connections.push_back(parent1->connections[i]);
@@ -179,5 +179,5 @@
 	for (unsigned int i = 0; i < parent2->connections.size(); i++)
 	{
-		if ((randomN(2) == 0 || skip2) && !skip1)
+		if ((rndUint(2) == 0 || skip2) && !skip1)
 		{
 			child1->connections.push_back(parent2->connections[i]);
@@ -338,5 +338,5 @@
 	if (changedimensions)
 	{
-		int i = randomN(2 * dimensions);
+		int i = rndUint(2 * dimensions);
 		changeDoubleProperty(i, par, handle->type);
 	}
@@ -344,5 +344,5 @@
 	if (changeproperties)
 	{
-		int i = 2 * dimensions + randomN(par.getPropCount() - 2 * dimensions);
+		int i = 2 * dimensions + rndUint(par.getPropCount() - 2 * dimensions);
 		changeDoubleProperty(i, par, handle->type);
 	}
@@ -360,11 +360,11 @@
 	for (int i = 0; i < dimensions; i++)
 	{
-		par.setDouble(i, min + rnd0N(max - min));
-		par.setDouble(i + dimensions, min + rnd0N(max - min));
+		par.setDouble(i, min + rndDouble(max - min));
+		par.setDouble(i + dimensions, min + rndDouble(max - min));
 	}
 	handle->loadProperties(par);
 	if (handle->type != fHBodyType::NEURON)
 	{
-		int i = 2 * dimensions + randomN(par.getPropCount() - 2 * dimensions);
+		int i = 2 * dimensions + rndUint(par.getPropCount() - 2 * dimensions);
 		changeDoubleProperty(i, par, handle->type);
 	}
@@ -406,5 +406,5 @@
 		allhandlescount += creature->sticks.size();
 	}
-	unsigned int toselect = randomN(allhandlescount);
+	unsigned int toselect = rndUint(allhandlescount);
 	if (toselect < creature->connections.size())
 	{
@@ -436,5 +436,5 @@
 	if (par.getPropCount() > 0)
 	{
-		int i = randomN(par.getPropCount());
+		int i = rndUint(par.getPropCount());
 		if (*par.type(i) == 'f')
 		{
Index: cpp/frams/genetics/fL/fL_matheval.cpp
===================================================================
--- cpp/frams/genetics/fL/fL_matheval.cpp	(revision 857)
+++ cpp/frams/genetics/fL/fL_matheval.cpp	(revision 896)
@@ -613,5 +613,5 @@
 void MathEvaluation::mutateValueOrVariable(MathEvaluation::Number *&currval, bool usetime)
 {
-	if (randomN(2) == 0 && varcount > 0) // use variable
+	if (rndUint(2) == 0 && varcount > 0) // use variable
 	{
 		if (currval && currval->type == TokenType::NUMBER)
@@ -619,5 +619,5 @@
 			delete currval;
 		}
-		int var = randomN(varcount + (usetime ? 1 : 0));
+		int var = rndUint(varcount + (usetime ? 1 : 0));
 		if (varcount == var) // time is used
 		{
@@ -633,9 +633,9 @@
 		if (!currval || currval->type == TokenType::VARIABLE)
 		{
-			currval = new Number(rnd01);
+			currval = new Number(rndDouble(1));
 		}
 		else
 		{
-			currval->value = rnd01;
+			currval->value = rndDouble(1);
 		}
 	}
@@ -654,5 +654,5 @@
 		count = operatorstrings.size() - arithmeticoperatorscount;
 	}
-	randop += randomN(count);
+	randop += rndUint(count);
 	return operators[operatorstrings[randop]];
 }
@@ -663,9 +663,9 @@
 	{
 		int currsize = postfixlist.size();
-		int varid = randomN(varcount);
+		int varid = rndUint(varcount);
 		postfixlist.push_back(vars[varid]);
-		if (randomN(2) == 0 && varcount > 1)
-		{
-			int varid2 = randomN(varcount - 1);
+		if (rndUint(2) == 0 && varcount > 1)
+		{
+			int varid2 = rndUint(varcount - 1);
 			if (varid2 >= varid) varid2++;
 			postfixlist.push_back(vars[varid2]);
@@ -673,8 +673,8 @@
 		else
 		{
-			Number *num = new Number(rnd01);
+			Number *num = new Number(rndDouble(1));
 			postfixlist.push_back(num);
 		}
-		int opid = arithmeticoperatorscount + randomN(comparisonoperatorscount);
+		int opid = arithmeticoperatorscount + rndUint(comparisonoperatorscount);
 		postfixlist.push_back(operators[operatorstrings[opid]]);
 		if (currsize > 0)
@@ -689,9 +689,9 @@
 	if (postfixlist.size() == 0)
 	{
-		Number *val = new Number(rnd01);
+		Number *val = new Number(rndDouble(1));
 		postfixlist.push_back(val);
 		return -1;
 	}
-	int method = randomN(postfixlist.size() < MAX_MUT_FORMULA_SIZE ? MATH_MUT_COUNT : MATH_MUT_COUNT - 1);
+	int method = rndUint(postfixlist.size() < MAX_MUT_FORMULA_SIZE ? MATH_MUT_COUNT : MATH_MUT_COUNT - 1);
 	switch (method)
 	{
@@ -704,5 +704,5 @@
 		std::list<Token *>::iterator it = postfixlist.begin();
 		// insertion can be applied from 1st occurrence
-		int insertlocation = 1 + randomN(postfixlist.size() - 1);
+		int insertlocation = 1 + rndUint(postfixlist.size() - 1);
 		std::advance(it, insertlocation);
 		Operator *rndop;
@@ -732,5 +732,5 @@
 			id++;
 		}
-		int randid = randomN(numbersineval.size());
+		int randid = rndUint(numbersineval.size());
 		Number *numptr = (Number *)(*numbersineval[randid]);
 		mutateValueOrVariable(numptr, usetime);
@@ -750,5 +750,5 @@
 		if (ops.size() > 0)
 		{
-			int randid = randomN(ops.size());
+			int randid = rndUint(ops.size());
 			Operator *rndop;
 			if (randid == (int)ops.size() - 1)
@@ -783,5 +783,5 @@
 		if (firstofpairs.size() > 0)
 		{
-			int rndid = randomN(firstofpairs.size());
+			int rndid = rndUint(firstofpairs.size());
 			if ((*firstofpairs[rndid])->type == TokenType::NUMBER)
 			{
Index: cpp/frams/genetics/fL/fL_oper.cpp
===================================================================
--- cpp/frams/genetics/fL/fL_oper.cpp	(revision 857)
+++ cpp/frams/genetics/fL/fL_oper.cpp	(revision 896)
@@ -133,5 +133,5 @@
 		if (newword->name.startsWith("rot"))
 		{
-			double rot = 2 * rnd01;
+			double rot = rndDouble(2);
 			MathEvaluation *eval = new MathEvaluation(0);
 			eval->convertString(SString::valueOf(rot).c_str());
@@ -149,5 +149,5 @@
 		{
 			MathEvaluation *eval = new MathEvaluation(0);
-			eval->convertString(SString::valueOf(2 * rnd01 - 1).c_str());
+			eval->convertString(SString::valueOf(rndDouble(2) - 1).c_str());
 			newword->parevals[0] = eval;
 		}
@@ -171,5 +171,5 @@
 	else
 	{
-		int rid = randomN(creature->rules.size());
+		int rid = rndUint(creature->rules.size());
 		list = &creature->rules[rid]->objsucc;
 		numparams = creature->rules[rid]->objpred->npar;
@@ -183,5 +183,5 @@
 	if (method == FL_ADD_OTHER && creature->builtincount < (int)creature->words.size())
 	{
-		return creature->words[creature->wordnames[creature->builtincount + randomN((int)creature->words.size() - creature->builtincount)]];
+		return creature->words[creature->wordnames[creature->builtincount + rndUint((int)creature->words.size() - creature->builtincount)]];
 	}
 	else
@@ -209,5 +209,5 @@
 		case FL_ADD_ROT:
 		{
-			int rottype = randomN(3);
+			int rottype = rndUint(3);
 			switch (rottype)
 			{
@@ -287,5 +287,5 @@
 		case FL_CHG_ITER:
 		{
-			if (randomN(2) == 0)
+			if (rndUint(2) == 0)
 			{
 				creature->time = creature->time + iterchangestep <= ExtValue::getDouble(FL_MAXITER) ?
@@ -303,5 +303,5 @@
 			if (creature->rules.size() > 0)
 			{
-				int ruleid = randomN(creature->rules.size());
+				int ruleid = rndUint(creature->rules.size());
 				if (!creature->rules[ruleid]->condeval)
 				{
@@ -340,5 +340,5 @@
 			if (wordswithnorules.size() > 0)
 			{
-				int predid = randomN(wordswithnorules.size());
+				int predid = rndUint(wordswithnorules.size());
 				fL_Rule *newrule = new fL_Rule(0,0);
 				fL_Word *pred = new fL_Word();
@@ -352,5 +352,5 @@
 			else if (creature->rules.size() > 0)
 			{
-				int ruleid = randomN(creature->rules.size());
+				int ruleid = rndUint(creature->rules.size());
 				fL_Rule *newrule = new fL_Rule(0, 0);
 				fL_Word *pred = new fL_Word();
@@ -392,5 +392,5 @@
 			if (creature->countDefinedWords() <= maxdefinedwords)
 			{
-				int npar = randomN(ExtValue::getInt(FL_MAXPARAMS, false));
+				int npar = rndUint(ExtValue::getInt(FL_MAXPARAMS, false));
 				for (int i = 0; i < maxdefinedwords; i++)
 				{
@@ -421,5 +421,5 @@
 				if (list->size() > 1)
 				{
-					int rndid = randomN(list->size() - 1);
+					int rndid = rndUint(list->size() - 1);
 					int j = 0;
 					std::list<fL_Word *>::iterator it = list->begin();
@@ -455,5 +455,5 @@
 			else
 			{
-				int rndid = randomN(list->size());
+				int rndid = rndUint(list->size());
 				std::list<fL_Word *>::iterator it = list->begin();
 				std::advance(it, rndid);
@@ -482,5 +482,5 @@
 			int tmp = 0;
 			std::list<fL_Word *> *list = selectRandomSequence(creature, numpars, tmp);
-			int rndid = randomN(list->size());
+			int rndid = rndUint(list->size());
 			std::list<fL_Word *>::iterator it = list->begin();
 			std::advance(it, rndid);
@@ -512,5 +512,5 @@
 				fL_Branch *start = new fL_Branch(fL_Branch::BranchType::OPEN, 0, 0);
 				list->insert(it, start);
-				int rottype = randomN(2);
+				int rottype = rndUint(2);
 				switch (rottype)
 				{
@@ -531,5 +531,5 @@
 			int tmp = 0;
 			std::list<fL_Word *> *list = selectRandomSequence(creature, numpars, tmp);
-			int rndid = randomN(list->size());
+			int rndid = rndUint(list->size());
 			std::list<fL_Word *>::iterator selectedword = list->begin();
 			std::advance(selectedword, rndid);
@@ -545,5 +545,5 @@
 				int numpars = 0;
 				std::list<fL_Word *> *list = selectRandomSequence(creature, numpars, tmp);
-				int rndid = randomN(list->size());
+				int rndid = rndUint(list->size());
 				std::list<fL_Word *>::iterator it = list->begin();
 				std::advance(it, rndid);
@@ -577,5 +577,5 @@
 					if (available.size() > 0)
 					{
-						int newnameid = randomN(available.size());
+						int newnameid = rndUint(available.size());
 						(*selectedword)->name = available[newnameid]->name;
 					}
@@ -593,5 +593,5 @@
 				if ((*selectedword)->npar > 0)
 				{
-					int randeval = randomN((*selectedword)->npar);
+					int randeval = rndUint((*selectedword)->npar);
 					Param par((*selectedword)->tab, (*selectedword)->data);
 					if ((*selectedword)->builtin && (*selectedword)->name == "N"
@@ -614,5 +614,5 @@
 							if (w->npar > 0)
 							{
-								int rndattr = randomN(w->npar);
+								int rndattr = rndUint(w->npar);
 								if (!w->parevals[rndattr])
 								{
@@ -638,5 +638,5 @@
 								if (w->npar > 0)
 								{
-									int rndattr = randomN(w->npar);
+									int rndattr = rndUint(w->npar);
 									for (int i = 0; i < w->npar; i++)
 									{
@@ -752,5 +752,5 @@
 		for (int i = 0; i < numselrules; i++)
 		{
-			int rulid = randomN(from->rules.size());
+			int rulid = rndUint(from->rules.size());
 			fL_Rule *rul = from->rules[rulid];
 			fL_Rule *newrule = new fL_Rule(0, 0);
@@ -841,10 +841,10 @@
 	creature2template->parseGenotype(g2);
 
-	int numselrules = 1 + randomN(XOVER_MAX_MIGRATED_RULES);
+	int numselrules = 1 + rndUint(XOVER_MAX_MIGRATED_RULES);
 	numselrules = numselrules < (int)creature1->rules.size() ? numselrules : (int)creature1->rules.size();
 
 	migrateRandomRules(creature1template, creature2, numselrules);
 
-	numselrules = 1 + randomN(XOVER_MAX_MIGRATED_RULES);
+	numselrules = 1 + rndUint(XOVER_MAX_MIGRATED_RULES);
 	numselrules = numselrules < (int)creature1->rules.size() ? numselrules : (int)creature1->rules.size();
 
Index: cpp/frams/genetics/fT/fTest_oper.cpp
===================================================================
--- cpp/frams/genetics/fT/fTest_oper.cpp	(revision 857)
+++ cpp/frams/genetics/fT/fTest_oper.cpp	(revision 896)
@@ -1,4 +1,4 @@
 // This file is a part of Framsticks SDK.  http://www.framsticks.com/
-// Copyright (C) 1999-2015  Maciej Komosinski and Szymon Ulatowski.
+// Copyright (C) 1999-2019  Maciej Komosinski and Szymon Ulatowski.
 // See LICENSE.txt for details.
 
@@ -88,7 +88,7 @@
 	int changes = 0, len = strlen(geno);
 	for (int i = 0; i < len; i++)
-		if (rnd01 < prob) //normalize prob with length of genotype
+		if (rndDouble(1) < prob) //normalize prob with length of genotype
 		{
-			geno[i] = a[randomN(4)];
+			geno[i] = a[rndUint(4)];
 			changes++;
 		}
@@ -101,6 +101,6 @@
 {
 	int len1 = strlen(g1), len2 = strlen(g2);
-	int p1 = randomN(len1);  //random cut point for first genotype
-	int p2 = randomN(len2);  //random cut point for second genotype
+	int p1 = rndUint(len1);  //random cut point for first genotype
+	int p2 = rndUint(len2);  //random cut point for second genotype
 	char *child1 = (char*)malloc(p1 + len2 - p2 + 1);
 	char *child2 = (char*)malloc(p2 + len1 - p1 + 1);
Index: cpp/frams/genetics/fn/fn_oper.cpp
===================================================================
--- cpp/frams/genetics/fn/fn_oper.cpp	(revision 857)
+++ cpp/frams/genetics/fn/fn_oper.cpp	(revision 896)
@@ -5,5 +5,5 @@
 #include "fn_oper.h"
 #include "fn_conv.h"
-#include <common/nonstd.h> //randomN, rnd01
+#include <common/nonstd.h> //rndUint, rnd01
 
 
@@ -80,5 +80,5 @@
 	if (mut_single_var) //mutate only one, randomly selected variable
 	{
-		int which = randomN(values.size());
+		int which = rndUint(values.size());
 		values[which] = GenoOperators::mutateCreep('f', values[which], bound_low[which], bound_high[which], stddev[which], false);
 		chg = 1.0f / values.size();
@@ -103,5 +103,5 @@
 	//xover_proportion = 0.1; //testing...
 
-	double proportion = xover_proportion_random ? 0.5 + rnd0N(0.5) : xover_proportion;
+	double proportion = xover_proportion_random ? 0.5 + rndDouble(0.5) : xover_proportion;
 
 	chg1 = proportion;
Index: cpp/frams/genetics/genman.cpp
===================================================================
--- cpp/frams/genetics/genman.cpp	(revision 857)
+++ cpp/frams/genetics/genman.cpp	(revision 896)
@@ -362,5 +362,5 @@
 		{
 			char *gn;
-			if (g1n[0] && g2n[0]) if (randomN(2) == 0) g1n[0] = 0; else g2n[0] = 0; //both provided? we want only one
+			if (g1n[0] && g2n[0]) if (rndUint(2) == 0) g1n[0] = 0; else g2n[0] = 0; //both provided? we want only one
 			if (g1n[0]) { gn = g1n; chg = chg1; }
 			else { gn = g2n; chg = chg2; }
Index: cpp/frams/genetics/genooperators.cpp
===================================================================
--- cpp/frams/genetics/genooperators.cpp	(revision 857)
+++ cpp/frams/genetics/genooperators.cpp	(revision 896)
@@ -38,5 +38,5 @@
 	int i;
 	for (i = 0; i < count; i++) sum += probtab[i];
-	double sel = rnd01*sum;
+	double sel = rndDouble(sum);
 	for (sum = 0, i = 0; i < count; i++) { sum += probtab[i]; if (sel < sum) return i; }
 	return -1;
@@ -81,5 +81,5 @@
 		neucls = n->getClass() == NULL ? 0 : n->getClass()->getProperties().getPropCount();
 	if (neuext + neucls == 0) return -1; //no properties in this neuron
-	int index = randomN(neuext + neucls);
+	int index = rndUint(neuext + neucls);
 	if (index >= neuext) index = index - neuext + 100;
 	return index;
@@ -142,5 +142,5 @@
 	{
 		result = int(result + 0.5);
-		if (result == current) result += randomN(2) * 2 - 1; //force some change
+		if (result == current) result += rndUint(2) * 2 - 1; //force some change
 	}
 	else
@@ -238,5 +238,5 @@
 		if (Neuro::getClass(i)->genactive)
 			active.push_back(Neuro::getClass(i));
-	if (active.size() == 0) return NULL; else return active[randomN(active.size())];
+	if (active.size() == 0) return NULL; else return active[rndUint(active.size())];
 }
 
@@ -247,5 +247,5 @@
 		if (Neuro::getClass(i)->genactive && Neuro::getClass(i)->getPreferredOutput() != 0)
 			active.push_back(Neuro::getClass(i));
-	if (active.size() == 0) return NULL; else return active[randomN(active.size())];
+	if (active.size() == 0) return NULL; else return active[rndUint(active.size())];
 }
 
@@ -256,5 +256,5 @@
 		if (Neuro::getClass(i)->genactive && Neuro::getClass(i)->getPreferredInputs() != 0)
 			active.push_back(Neuro::getClass(i));
-	if (active.size() == 0) return NULL; else return active[randomN(active.size())];
+	if (active.size() == 0) return NULL; else return active[rndUint(active.size())];
 }
 
@@ -265,5 +265,5 @@
 		if (Neuro::getClass(i)->genactive && Neuro::getClass(i)->getPreferredOutput() != 0 && Neuro::getClass(i)->getPreferredInputs() == 0)
 			active.push_back(Neuro::getClass(i));
-	if (active.size() == 0) return NULL; else return active[randomN(active.size())];
+	if (active.size() == 0) return NULL; else return active[rndUint(active.size())];
 }
 
@@ -274,5 +274,5 @@
 		if (NClist[i]->getPreferredOutput() != 0) //this NeuroClass provides output
 			allowed.push_back(i);
-	if (allowed.size() == 0) return -1; else return allowed[randomN(allowed.size())];
+	if (allowed.size() == 0) return -1; else return allowed[rndUint(allowed.size())];
 }
 
@@ -283,5 +283,5 @@
 		if (NClist[i]->getPreferredInputs() != 0) //this NeuroClass wants one input connection or more			
 			allowed.push_back(i);
-	if (allowed.size() == 0) return -1; else return allowed[randomN(allowed.size())];
+	if (allowed.size() == 0) return -1; else return allowed[rndUint(allowed.size())];
 }
 
@@ -291,5 +291,5 @@
 	for (size_t i = 0; i < strlen(choices); i++) if (!strchrn0(excluded, choices[i])) allowed_count++;
 	if (allowed_count == 0) return -1; //no char is allowed
-	int rnd_index = randomN(allowed_count) + 1;
+	int rnd_index = rndUint(allowed_count) + 1;
 	allowed_count = 0;
 	for (size_t i = 0; i < strlen(choices); i++)
