Извините, это звучит как домашнее задание, но мне нужна эта функция для DLL, которую я реализую в нашем проекте.
for (string strLine; std::getline(filein, strLine);)
{
int iSum = 0;
for (const auto& c : strLine)
iSum += static_cast<int>(c);
int iRand = iSum % 101;
using namespace std;;
fileout << strLine << "\t" << iSum << "\t" << iRand << endl;
}
Я запускаю это на 1000 случайных строк. Результаты не являются одинаковыми. Это не удивительно, так как моя картографическая функция смущает.
Я пытался смотреть на Генерация псевдослучайных чисел и вроде потерялся.
Почему бы просто не использовать встроенный станд :: хэш
#include <string>
#include <functional>
std::hash<std::string> hasher;
iRand = hasher(strLine) % 101; // iRand will be in [0,100] range
Других решений пока нет …