国产探花免费观看_亚洲丰满少妇自慰呻吟_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,在“鳥哥”的一篇博文中也有提到。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 哈尔滨市| 池州市| 汪清县| 马龙县| 宕昌县| 磐石市| 皮山县| 蓝田县| 安阳市| 山阴县| 增城市| 黄陵县| 西乌珠穆沁旗| 大悟县| 金昌市| 平利县| 乐至县| 象州县| 古田县| 淳安县| 涟水县| 博湖县| 乌兰县| 利辛县| 泾川县| 夏邑县| 银川市| 工布江达县| 淮北市| 炎陵县| 凤山市| 通州区| 黎川县| 怀宁县| 昭苏县| 仪征市| 乌拉特后旗| 乌恰县| 邯郸市| 开封市| 乐昌市|