在 JDK的java.util包里提供了一個用于生成隨機數的Random類,它是如何生成隨機數的?為什么它生成的隨機數是均勻的?今天我們一起來聊聊其背后的原理。
本文基于Java語言,jdk 11。
Random是 java.util 包提供的一個用于生成隨機數的類,首先,我們看看官方對它的描述:
通過源碼,我們總結出幾個核心點:
偽隨機數指的是一種看起來像隨機數的序列,但實際上是由確定性算法生成的。這種算法稱為偽隨機數生成器(PRNG,Pseudo-Random Number Generator)。
PRNG使用一個稱為”種子”的初始值,然后通過一系列的數學運算來生成一個序列,這個序列看起來具有隨機性的特征,比如均勻分布、無序性等。
在隨機數生成器中,種子(seed)其實就是一個起始值,它用于初始化隨機數生成器的狀態。隨機數生成器使用這個種子來確定生成隨機數的序列。種子決定了隨機數生成器的初始狀態,因此給定相同的種子,將會生成相同的隨機數序列。
線性同余算法(LCG,Linear Congruential Generator)是最基本的偽隨機數生成算法之一,該算法通常使用如下方程表示:
本文鏈接:http://www.www897cc.com/showinfo-26-88333-0.html如何用 Java 高效的生成隨機數?Random 的原理是什么?
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 聊聊C#中的委托與事件