小编Har*_*ell的帖子

简单的哈希函数

我正在尝试编写一个使用哈希表来存储不同单词的C程序,我可以使用一些帮助.

首先,我创建一个哈希表,其中素数的大小最接近我必须存储的单词的数量,然后我使用哈希函数来查找每个单词的地址.我从最简单的功能开始,将字母加在一起,结果是88%的碰撞.然后我开始尝试该功能,发现无论我改变它,碰撞都不会低于35%.现在我正在使用

unsigned int stringToHash(char *word, unsigned int hashTableSize){
  unsigned int counter, hashAddress =0;
  for (counter =0; word[counter]!='\0'; counter++){
    hashAddress = hashAddress*word[counter] + word[counter] + counter;
  }
  return (hashAddress%hashTableSize);
}
Run Code Online (Sandbox Code Playgroud)

这只是我提出的随机功能,但它给了我最好的结果 - 大约35%的碰撞.

过去几个小时我一直在阅读有关散列函数的文章,我尝试使用一些简单的函数,比如djb2,但是所有这些都给了我更糟糕的结果.(djb2导致了37%的碰撞,这是'更糟糕的是,但我期待更好而不是更糟糕的事情)我也不知道如何使用其他更复杂的一些,例如murmur2,因为我不知道参数是什么(关键,len ,种子)他们接受了.

即使使用djb2,或者我做错了什么,获得超过35%的碰撞是正常的吗?什么是关键,len和种子价值?

c hashtable function string-hashing

33
推荐指数
1
解决办法
6万
查看次数

将十六进制值传递给Verilog中的模块

我已经创建了一个模块,接受一个连线[4:0]作为输入,我正在使用这个模块的几个实例,但每当我传递一个包含的值时,我就会得到"实例端口表达式中的语法错误" AF.

例如

key_schedule i1(09); // works
key_schedule i1(0A); // doesn't work
key_schedule i1(15); // works
key_schedule i1(1D); // doesn't work
Run Code Online (Sandbox Code Playgroud)

如果有人知道什么是错的,我会感激他们的帮助.

另外,如果我传递的话会发生什么,例如,值为"C",但我也有一条叫C的线?

谢谢.

parameters verilog

5
推荐指数
2
解决办法
2万
查看次数

iTextSharp table.SpacingBefore当表是第一个项目时不工作

我正在尝试使用table.SpacingBefore在我的PDF文件中的表格之前放置一些空格,但它不起作用.

我找到了iTextSharp table.SpacingBefore不工作 ,这是完全相同的问题,但解决方案似乎没有工作.

这是我的一些代码:

header.SpacingBefore = 150f;
Paragraph paragraph = new Paragraph();
paragraph.Leading = 0f;
doc1.Add(paragraph);
doc1.Add(header);
Run Code Online (Sandbox Code Playgroud)

结果是:

RESULT1

添加非空段落

Paragraph paragraph = new Paragraph(" TEXT ");
Run Code Online (Sandbox Code Playgroud)

产生这个:

在此输入图像描述

itext spacing

4
推荐指数
1
解决办法
4900
查看次数

标签 统计

c ×1

function ×1

hashtable ×1

itext ×1

parameters ×1

spacing ×1

string-hashing ×1

verilog ×1