C++ 将字符串映射到[0100]范围内随机数的算法 要求
抱歉,这听起来像是一个家庭作业,但我需要一个dll,我在我们的项目中实现这个功能C++ 将字符串映射到[0100]范围内随机数的算法 要求,c++,random,c++14,uniform-distribution,C++,Random,C++14,Uniform Distribution,抱歉,这听起来像是一个家庭作业,但我需要一个dll,我在我们的项目中实现这个功能 我有一个字符串数组 每个字符串的长度为16个随机字符[0-9a-z] 我想将每个字符串映射到[0100]范围内的随机数 字符串“X”将始终映射到数字“Y” 企图 (字符串strLine;std::getline(filein,strLine);) { int iSum=0; 用于(常量自动和c:strLine) iSum+=静态(c); int iRand=iSum%101; 使用名称空间std;; fileout
fileout为什么不直接使用内置的
#包括
#包括
散列哈希器;
iRand=hasher(strLine)%101;//iRand将在[0100]范围内
为什么不直接使用内置的
#包括
#包括
散列哈希器;
iRand=hasher(strLine)%101;//iRand将在[0100]范围内
任何好的散列函数都可以-Murruit,City,…字符串本身已经有了随机值。因为您希望每个字符串始终映射到同一个值,所以不应该引入额外的随机性。这就是为什么散列函数是正确的解决方案:它总是将每个输入值映射到同一个输出值。任何好的函数都有h函数可以-杂音,城市,…字符串本身已经有了随机值。因为您希望每个字符串始终映射到相同的值,所以不应该引入额外的随机性。这就是为什么哈希函数是正确的解决方案:它总是将每个输入值映射到相同的输出值。
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;
}
#include <string>
#include <functional>
std::hash<std::string> hasher;
iRand = hasher(strLine) % 101; // iRand will be in [0,100] range