ITPub博客

首页 > 区块链 > 区块链 > 关于Hash竞猜游戏开发技术方案丨哈希竞猜游戏系统开发逻辑(源码部署)

关于Hash竞猜游戏开发技术方案丨哈希竞猜游戏系统开发逻辑(源码部署)

原创 区块链 作者:Tg_StPv888 时间:2023-02-21 09:41:48 0 删除 编辑

1、哈希算法又叫散列算法,是将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。I8O量化2857交易8624系统开发它的原理其实很简单,就是把一段交易信息转换成一个固定长度的字符串。MD5和SHA-1可以说是应用最广泛的Hash算法,而它们都是以MD4为基础设计的。


2、这串字符串具有一些特点:


(1)信息相同,字符串也相同。


(2)信息相似不会影响字符串相同。


(3)可以生成无数的信息,但是字符串的种类是一定的,所以是不可逆的。


常见哈希函数构建方法有五种


①直接定址法:


取关键字或关键字的某个线性函数值为哈希地址


H(key) = key 或 H(key) = a·key + b


 


②相乘取整法:


首先用关键字key乘上某个常数A(0 < A < 1),


并抽取出key.A的小数部分;


然后用m乘以该小数后取整。


 


③平方取中法:


取关键字平方后的中间几位为哈希地址。


 


④除留余数法:


取关键字被数p除后所得余数为哈希地址:


H(key) = key MOD p (p ≤ m)。


 


⑤随机数法:开发:StPv888


选择一个随机函数,


取关键字的随机函数值为它的哈希地址,


即 H(key) = random (key),


其中random为随机函数。


include

using namespace std;


typedef unsigned long long ull;//溢出写法


ull base = 19260817;//魔法进制 添加以后能让代码-1s


ull a[10010];


char s[10010];


int n, ans = 1;


int prime = 19260817;//选取取模以后加上的一个质数


ull mod = 212370440130137957ll;//选取基本哈希模 也就是一个key


//假设选取的模数和质数恰当 那么哈希碰撞的概率也就越小


//我们就认为哈希的正确率是可观的


//本文只是单哈希写法 不涉及极端的情况


ull Thehash(char s[])//传入一个字符串


{


  int len = strlen(s);


  ull ans = 0;


  for (int i = 0; i < len; i++)


    ans = (ans * base + (ull)s[i]) % mod + prime;//ans最后的值就是该字符串经过哈希以后的值


  return ans;


}


int main()


{


  scanf("%d", &n);


  for (int i = 1; i <= n; i++)


  {


    scanf("%s", s);


    a[i] = Thehash(s);//用a数组来储存哈希的值


  }


  sort(a + 1, a + n + 1);//要排序以后才能用遍历的方法比较是否出现一样的值


  //注意从a+1开始排噢


  for (int i = 1; i < n; i++)


  {


    if (a[i] != a[i + 1])


      ans++;//比较哈希值 如果哈希值相等 那么我们认为这个字符串是相同的


  }


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70016646/viewspace-2936087/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
专业区块项目开发团队:18028578624微電

注册时间:2022-04-13

  • 博文量
    158
  • 访问量
    95690