同余的应用
来源:互联网 发布:java string byte 互转 编辑:程序博客网 时间:2024/04/20 06:18
1. 散列函数
可以为计算机文件分配内在地,最常用的散列函数之一是 h(k) = k mod m,m是可用内内存的数目例如,以客户的社会安全号作为记录,当 m= 111 时,
h(064212848) = 064212848 mod 111 = 14h(037149212) = 037149212 mod 111 = 65
由于散列函数不是一对一的,有可能多个记录分配到同一个内存地址,这时就说出现了冲突,消解冲突的一个办法是使用散列函数给出的但已经被占用的地址后面第一个未占用的地址。
2. 伪随机数
生成伪随机数的过程称为线性同余法。选择4个数:模数m,乘数a,增量c,和种子x0,使得 2<= a <m,0<= c <m, 0<= x0 <m。生成办法是逐次同余
xn+1 = (a*xn + c) mod m , 有时要求产生0和1之间的伪随机数,可以用线性同余法生成的数除以模数。
例如 m = 9, a = 7, c = 4, x0 = 3
x1 = 7x0 + 4 mod 9 = 7 * 3 + 4 mod 9 = 25 mod 9 = 7
x2 = 7x1 + 4 mod 9 = 7 * 7 + 4 mod 9 = 53 mod 9 = 8
x3 = 7x2 + 4 mod 9 = 7 * 8 + 4 mod 9 = 60 mod 9 = 6
……
x 9 = 7x8 + 4 mod 9 = 7 * 5 + 4 mod 9 = 39 mod 9 = 3
由于x9 = x0 而且每一项都只依赖于其前面一项,所以产生的序列如下
3 7 8 6 1 2 0 4 5 3 7 8 6 1 2 0 4 5 3 ……
大部分计算机的确使用线性同余法生成 伪随机数。常使用的线性同余发生器的增量 c = 0,这样的发生器称为"纯乘式发生器",例如以2^31 - 1为模,以7^5 = 16807为乘数的纯乘式发生器就广为采用,可以证明以这些值来计算,会产生2^32 - 2个数,然后开始重复。
3. 密码学
已知最早使用密码的例子之一是凯撒。使用数学来表达凯撒加密过程,就按照字母在字母表中的位置,用0到25的数表示字母,加密方式用函数 f 表示,对每个非负整数p,p<= 25,函数 f(p) = (p + k) mod 26 是将每个字母移动k位,例如 f(p) = (p + 3) mod 26,将每个字母移动3位,解密可以为加密的反函数,f`(p) = (p - k) mod 26
凯撒的方法和移位密码不能提供高度安全,稍稍提高一下安全度的方法是使用 f(p) = (ap + b) mod 26 这样的函数。例如 f(p) = (7p + 3) mod 26
凯撒的加密法及其扩展都是用字母表中的一个字母代替另一个,这类加密法很容易受到根据字母在信息中出现的频率作出攻击。
(以上内容来自《离散数学及其应用》第6版)
- 同余的应用
- 同余定理的应用
- 同余定理的应用
- 解线性同余方程的应用
- 解高次同余方程的应用
- 同余基本定理的应用
- 同余的性质
- 【同余】-定义&计算&应用
- HDU1573 X问题 解线性同余方程的应用
- HDU3579 Hello Kiki 解线性同余方程的应用
- 解线性同余方程的应用(一)
- 解线性同余方程的应用(二)
- 同余问题的口诀
- 同余问题的理解
- 数论的同余定理
- 同余的一些知识
- 同余的基本定理
- 线性同余方程初步应用分析
- paip.VOB DVD视频的无损分割与截取
- SVN使用时经常报Failed to load JavaHL Library.These are the errors that were encountered
- 黑马程序员--java银行业务调度系统
- 关于索引的几个小问题
- 第九周-项目2
- 同余的应用
- 读书三得:向钱穆大师学习读书方法
- paip.android 读取docx总结
- 如何将TextBox添加到dataGridView中
- 关于大学中开展软件类讨论组一些想法
- C、C++、VC++ 三者之间的区别。
- 飙车
- BLUE和BLUP
- paip.验证码识别---初始化