Алгоритм отображения строки в случайное число в диапазоне [0,100] - PullRequest
0 голосов
/ 03 июня 2018

Требование

Извините, это звучит как домашнее задание, но мне нужна эта функция для DLL, которую я внедряю в нашем проекте.

  1. У меня есть массив строк.
  2. Каждая строка имеет длину 16 случайных символов [0-9a-z]
  3. Я хочу отобразить каждую строку на случайное число в диапазоне [0,100]
  4. String'X' всегда будет отображаться на число 'Y'

Попытка

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 случайных строк.Результаты не являются одинаковыми.Это не удивительно, так как моя картографическая функция смущает.

Я попытался посмотреть Генерация псевдослучайного числа , и вроде как заблудился.

1 Ответ

0 голосов
/ 03 июня 2018

Почему бы просто не использовать встроенный std :: hash

#include <string>
#include <functional>

std::hash<std::string> hasher;
iRand = hasher(strLine) % 101; // iRand will be in [0,100] range
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...