Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将字符串映射到[0100]范围内随机数的算法 要求_C++_Random_C++14_Uniform Distribution - Fatal编程技术网

C++ 将字符串映射到[0100]范围内随机数的算法 要求

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

抱歉,这听起来像是一个家庭作业,但我需要一个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为什么不直接使用内置的

    #包括
    #包括
    散列哈希器;
    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