diff --git a/alib2algo/src/string/generate/RandomStringFactory.cpp b/alib2algo/src/string/generate/RandomStringFactory.cpp
index b09850e9746c9cd3fda43f7bbe614d35ad7f49ea..91a6d35daa9ac059cb88ce31b8224354a6199869 100644
--- a/alib2algo/src/string/generate/RandomStringFactory.cpp
+++ b/alib2algo/src/string/generate/RandomStringFactory.cpp
@@ -17,6 +17,20 @@ namespace string {
 
 namespace generate {
 
+string::LinearString RandomStringFactory::generateLinearString ( size_t size, size_t alphabetSize, bool randomizedAlphabet, bool integerSymbols ) {
+	if ( !integerSymbols ) return generateLinearString ( size, alphabetSize, randomizedAlphabet );
+
+	if ( alphabetSize <= 0 )
+		throw exception::AlibException ( "Alphabet size must be greater than 0." );
+
+	std::vector < alphabet::Symbol > elems;
+
+	for ( size_t i = 0; i < size; i++ )
+		elems.push_back ( alphabet::symbolFrom ( static_cast < int > ( std::random_devices::semirandom ( ) % alphabetSize ) ) );
+
+	return string::LinearString ( elems );
+}
+
 string::LinearString RandomStringFactory::generateLinearString ( size_t size, size_t alphabetSize, bool randomizedAlphabet ) {
 	if ( alphabetSize > 26 )
 		throw exception::AlibException ( "Too big alphabet." );
diff --git a/alib2algo/src/string/generate/RandomStringFactory.h b/alib2algo/src/string/generate/RandomStringFactory.h
index 7b5e784efbff84ee9c1a9ba4adc9daf55088f433..39f1a8e3945aa047b46dd68b463c69f259da9c0e 100644
--- a/alib2algo/src/string/generate/RandomStringFactory.h
+++ b/alib2algo/src/string/generate/RandomStringFactory.h
@@ -17,6 +17,7 @@ namespace generate {
 
 class RandomStringFactory {
 public:
+	static string::LinearString generateLinearString ( size_t size, size_t alphabetSize, bool randomizedAlphabet, bool integerSymbols );
 	static string::LinearString generateLinearString ( size_t size, size_t alphabetSize, bool randomizedAlphabet );
 	static string::LinearString generateLinearString ( size_t size, std::set < alphabet::Symbol > alphabet );
 };
diff --git a/arand2/src/arand.cpp b/arand2/src/arand.cpp
index 0d796fd892943f5b6bab531b1633eb32007feeb3..19a66ba1023c9deb6aed8891d5241baef3ca297c 100644
--- a/arand2/src/arand.cpp
+++ b/arand2/src/arand.cpp
@@ -41,6 +41,9 @@ int main ( int argc, char * argv[] ) {
 		TCLAP::ValueArg < int > alphabetSize ( "", "terminals", "Number of terminals/alphabet size", false, 3, "integer" );
 		cmd.add ( alphabetSize );
 
+		TCLAP::SwitchArg integerSymbols ( "", "integerSymbols", "Use integer symbols instead of char symbols", false );
+		cmd.add ( integerSymbols );
+
 		TCLAP::SwitchArg randomizedAlphabet ( "", "randomizedTerminals", "Number of terminals/alphabet size", false );
 		cmd.add ( randomizedAlphabet );
 
@@ -127,7 +130,7 @@ int main ( int argc, char * argv[] ) {
 		} else if ( type.getValue ( ) == "ST" ) {
 			measurements::start ( "Algorithm", measurements::Type::MAIN );
 
-			string::LinearString res = string::generate::RandomStringFactory::generateLinearString ( length.getValue ( ), alphabetSize.getValue ( ), randomizedAlphabet.getValue ( ) );
+			string::LinearString res = string::generate::RandomStringFactory::generateLinearString ( length.getValue ( ), alphabetSize.getValue ( ), randomizedAlphabet.getValue ( ), integerSymbols.getValue ( ) );
 
 			measurements::end ( );
 			measurements::start ( "Output write", measurements::Type::AUXILIARY );