fbpx
维基百科

伪随机性

伪随机性(英語:Pseudorandomness)是一个过程似乎是随机的,但实际上并不是。例如伪随机数是使用一个确定性的算法计算出来的似乎是随机的数序,因此伪随机数实际上并不随机。在计算伪随机数时假如使用的开始值不变的话,那么伪随机数的数序也不变。伪随机数的随机性可以用它的统计特性来衡量,其主要特征是每个数出现的可能性和它出现时与数序中其它数的关系。伪随机数的优点是它的计算比较简单,而且只使用少数数值很难推算出计算它的算法。一般人们使用一个假的随机数,比如電腦上的時間作为计算伪随机数的开始值。

计算机伪随机数函数

用来计算伪随机数的函数被称为随机函数,使用随机函数產生隨機數的演算法稱為随机数生成器。一些随机函数是周期性的,虽然一般来说使用非周期性的函数要好得多,但周期性的随机函数往往快得多。有些周期函数的系数可以调整,之后它们的周期非常大,基本上与非周期的函数效果一样。

C语言

/* 使用 ANSI C 可移植算法 */ static unsigned long int next = 1; // 种子 int rand(void) // 生成伪随机数 {  next = next * 1103515245 + 12345;  return (unsigned int) (next / 65536) % 32768; } void srand(unsigned int seed) // 修改种 {  next = seed; } 

可见,伪随机数是由一套产生随机数的演算法实现的。

使用

电脑模拟中伪随机数用来模拟產生随机的过程,背景雜訊产生器中也可应用伪随机数。由于伪随机数不是真的随机数,在有些方面它们不能被使用,例如在密码学中使用伪随机数要小心,因为其可计算性是一个可以攻击的地方。統計學蒙特·卡罗方法上使用的偽隨機數也必須挑選週期極長、隨機性夠高的隨機函數,以確保計算結果有足夠的隨機性。

伪随机数的一个特别大的优点是它们的计算不需要外部的特殊硬件的支持,因此在計算機科學中伪随机数依然被使用。真正的随机数必须使用专门的设备,比如熱噪訊號、量子力学的效应、放射性元素的衰退輻射,或使用无法预测的现象,譬如用户按鍵盤的位置與速度、用户运动鼠标的路径坐标等来产生。对于移动式计算,采用加速度传感器协助随机数生成亦是一种普遍做法。

参见

延伸閱讀

  • Donald E. Knuth (1997) The Art of Computer Programming, Volume 2: Seminumerical Algorithms (3rd edition). Addison-Wesley Professional, ISBN 0-201-89684-2
  • Oded Goldreich. (2008) Computational Complexity: a conceptual perspective (页面存档备份,存于互联网档案馆. Cambridge University Press. ISBN 978-0-521-88473-0.(Limited preview at Google Books)
  • Salil P. Vadhan. Pseudorandomness. Foundations and Trends® in Theoretical Computer Science: 1–336. [2018-04-02]. doi:10.1561/0400000010. (原始内容于2018-12-13). 

外部連結

  • HotBits: Genuine random numbers, generated by radioactive decay (页面存档备份,存于互联网档案馆
  • In RFC 1750, the use of pseudorandom number sequences in cryptography is discussed at length.

伪随机性, 此條目需要精通或熟悉相关主题的编者参与及协助编辑, 2013年5月27日, 請邀請適合的人士改善本条目, 更多的細節與詳情請參见討論頁, 英語, pseudorandomness, 是一个过程似乎是随机的, 但实际上并不是, 例如伪随机数是使用一个确定性的算法计算出来的似乎是随机的数序, 因此伪随机数实际上并不随机, 在计算伪随机数时假如使用的开始值不变的话, 那么伪随机数的数序也不变, 伪随机数的随机性可以用它的统计特性来衡量, 其主要特征是每个数出现的可能性和它出现时与数序中其它数的关系, 伪随机数. 此條目需要精通或熟悉相关主题的编者参与及协助编辑 2013年5月27日 請邀請適合的人士改善本条目 更多的細節與詳情請參见討論頁 伪随机性 英語 Pseudorandomness 是一个过程似乎是随机的 但实际上并不是 例如伪随机数是使用一个确定性的算法计算出来的似乎是随机的数序 因此伪随机数实际上并不随机 在计算伪随机数时假如使用的开始值不变的话 那么伪随机数的数序也不变 伪随机数的随机性可以用它的统计特性来衡量 其主要特征是每个数出现的可能性和它出现时与数序中其它数的关系 伪随机数的优点是它的计算比较简单 而且只使用少数数值很难推算出计算它的算法 一般人们使用一个假的随机数 比如電腦上的時間作为计算伪随机数的开始值 目录 1 计算机伪随机数函数 1 1 C语言 2 使用 3 参见 4 延伸閱讀 5 外部連結计算机伪随机数函数 编辑用来计算伪随机数的函数被称为随机函数 使用随机函数產生隨機數的演算法稱為随机数生成器 一些随机函数是周期性的 虽然一般来说使用非周期性的函数要好得多 但周期性的随机函数往往快得多 有些周期函数的系数可以调整 之后它们的周期非常大 基本上与非周期的函数效果一样 C语言 编辑 使用 ANSI C 可移植算法 static unsigned long int next 1 种子 int rand void 生成伪随机数 next next 1103515245 12345 return unsigned int next 65536 32768 void srand unsigned int seed 修改种 next seed 可见 伪随机数是由一套产生随机数的演算法实现的 使用 编辑在电脑模拟中伪随机数用来模拟產生随机的过程 背景雜訊产生器中也可应用伪随机数 由于伪随机数不是真的随机数 在有些方面它们不能被使用 例如在密码学中使用伪随机数要小心 因为其可计算性是一个可以攻击的地方 統計學 蒙特 卡罗方法上使用的偽隨機數也必須挑選週期極長 隨機性夠高的隨機函數 以確保計算結果有足夠的隨機性 伪随机数的一个特别大的优点是它们的计算不需要外部的特殊硬件的支持 因此在計算機科學中伪随机数依然被使用 真正的随机数必须使用专门的设备 比如熱噪訊號 量子力学的效应 放射性元素的衰退輻射 或使用无法预测的现象 譬如用户按鍵盤的位置與速度 用户运动鼠标的路径坐标等来产生 对于移动式计算 采用加速度传感器协助随机数生成亦是一种普遍做法 参见 编辑線性同餘方法 平方取中法 M sequence 梅森旋转算法 偽亂數二進位數列延伸閱讀 编辑Donald E Knuth 1997 The Art of Computer Programming Volume 2 Seminumerical Algorithms 3rd edition Addison Wesley Professional ISBN 0 201 89684 2 Oded Goldreich 2008 Computational Complexity a conceptual perspective 页面存档备份 存于互联网档案馆 Cambridge University Press ISBN 978 0 521 88473 0 Limited preview at Google Books Salil P Vadhan Pseudorandomness Foundations and Trends in Theoretical Computer Science 1 336 2018 04 02 doi 10 1561 0400000010 原始内容存档于2018 12 13 外部連結 编辑HotBits Genuine random numbers generated by radioactive decay 页面存档备份 存于互联网档案馆 Using and Creating Cryptographic Quality Random Numbers In RFC 1750 the use of pseudorandom number sequences in cryptography is discussed at length 取自 https zh wikipedia org w index php title 伪随机性 amp oldid 71413953, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。