国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

PHP Hash算法:Times33算-法代碼實例

2019-11-02 15:10:16
字體:
來源:轉載
供稿:網友

   這篇文章主要介紹了PHP Hash算法:Times33算法代碼實例,本文直接給出實現代碼,需要的朋友可以參考下

  最近看書,里面提到了一些Hash算法。比較有印象的是Times33,當時理解不是很透測,今天寫了段程序來驗證了一下。

  先上代碼:

  復制代碼 代碼如下:

  

  /**

  * CRC32 Hash function

  * @param $str

  * @return int

  */

  function hash32($str)

  {

  return crc32($str) >> 16 & 0x7FFFFFFF;

  }

  /**

  * Times33 Hash function

  * @param $str

  * @return int

  */

  function hash33($str)

  {

  $hash = 0;

  for($i=0; $i

  $hash += 33 * $hash + ord($str{$i});

  }

  return $hash & 0x7FFFFFFF;

  }

  $n = 10;

  // Test Case 1

  $stat = array();

  for($i=0; $i<10000; $i++){

  $str = substr(md5(microtime(true)), 0, 8);

  $p = hash32($str) % $n;

  if(isset($stat[$p])){

  $stat[$p]++;

  }else{

  $stat[$p] = 1;

  }

  }

  print_r($stat);

  // Test Case 2

  $stat = array();

  for($i=0; $i<10000; $i++){

  $str = substr(md5(microtime(true)), 0, 8);

  $p = hash33

掌酷影院[www.aikan.tv/special/zhangkuyingyuan/]
($str) % $n;

  if(isset($stat[$p])){

  $stat[$p]++;

  }else{

  $stat[$p] = 1;

  }

  }

  print_r($stat);

  以上有兩個測試用例。第一個,用CRC32的方法;第二個是Times33的算法實現。

  效果:

  結果分布,兩種算法不相上下(估計是數據源的問題,md5只有0-f)。也有文章說CRC32的分布更均勻(參考鏈接:)

  但耗費時間,CRC32比Times33快將近一倍。

  為什么是33?

  即是素數(質數),也是奇數。除了33,還有131, 1313, 5381等。PHP內置的Hash函數用的是5381,在“鳥哥”的一篇博文中也有提到。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄陵县| 富阳市| 德阳市| 崇信县| 桃源县| 汉中市| 固始县| 德格县| 汤阴县| 盐山县| 北川| 兖州市| 根河市| 佳木斯市| 那曲县| 江城| 张家川| 通河县| 阜新市| 新巴尔虎右旗| 息烽县| 沅陵县| 杭锦旗| 靖西县| 庄河市| 罗平县| 诸暨市| 松潘县| 抚宁县| 桐柏县| 西昌市| 大姚县| 元阳县| 涪陵区| 中山市| 凤凰县| 临猗县| 麻江县| 常州市| 连平县| 新疆|