在JavaScript中,我如何获得:
我正在寻找哈希表如何工作的解释 - 用像我这样的傻瓜的简单英语!
例如,我知道它需要密钥,计算哈希值(我正在寻找解释如何)然后执行某种模数来计算它存储在存储值的数组中的位置,但这就是我的知识停止的地方.
任何人都可以澄清这个过程吗?
编辑:我没有具体询问如何计算哈希码,而是概述哈希表的工作原理.
我已经看到这个问题了很多但从未见过真正的具体答案.所以我将在这里发布一个,希望能帮助人们理解为什么在使用随机数生成器时会出现"模数偏差",就像rand()
在C++中一样.
什么是%
在计算?我似乎无法弄清楚它的作用.
例如,它是否计算出计算的百分比:4 % 2
显然等于0.如何?
作为伪代码的一个例子:
if ((a mod 2) == 0)
{
isEven = true;
}
else
{
isEven = false;
}
Run Code Online (Sandbox Code Playgroud) 我有一个C++程序(使用g ++编译).我正在尝试将两个双精度数作为操作数应用于模数函数,但是我得到以下错误:
错误:类型'double'和'double'到二进制'operator%'的操作数无效
这是代码:
int main() {
double x = 6.3;
double y = 2;
double z = x % y;
}
Run Code Online (Sandbox Code Playgroud) 我试图修改一个整数来获得一个数组位置,以便它循环.i %
arrayLength
对于正数而言做得很好,但对于负数而言,这一切都是错误的.
4 % 3 == 1
3 % 3 == 0
2 % 3 == 2
1 % 3 == 1
0 % 3 == 0
-1 % 3 == -1
-2 % 3 == -2
-3 % 3 == 0
-4 % 3 == -1
Run Code Online (Sandbox Code Playgroud)
所以我需要一个实现
int GetArrayIndex(int i, int arrayLength)
Run Code Online (Sandbox Code Playgroud)
这样的
GetArrayIndex( 4, 3) == 1
GetArrayIndex( 3, 3) == 0
GetArrayIndex( 2, 3) == 2
GetArrayIndex( 1, 3) == 1
GetArrayIndex( 0, 3) …
Run Code Online (Sandbox Code Playgroud) 在ac程序中我正在尝试以下操作(只是检查行为)
x = 5 % (-3);
y = (-5) % (3);
z = (-5) % (-3);
printf("%d ,%d ,%d", x, y, z);
Run Code Online (Sandbox Code Playgroud)
给我输出为(2, -2 , -2)
gcc.我每次都期待一个积极的结果.模数可以为负数吗?任何人都可以解释这种行为吗?
我很尴尬地问这么简单的问题.我的任期不会再开始两周,所以我不能问一位教授,这个悬念会杀了我.
为什么2 mod 4 = 2?