不知道你有沒有參與過公司年會,
互聯網公司的年會抽獎環節正常都是用自己寫的軟件抽獎的,然后我們經常會看到每年年會期間有些公司會在年會上現場 review抽獎代碼,基本都是覺得他丫的這是不是真的隨機抽獎?
其實真正的隨機是不存在的,至少在代碼層面不存在,因為隨機數在代碼層面都是用算法來計算,而算法只能通過優化來確保隨機數在某個空間上均勻分布。
打個比方,如果在0 - 100 里面生成 一萬個隨機數,那么結果應該是這一萬個數均勻分布在 0 - 100 這個區間,也可以理解為每個數出現的次數基本一致。而偽隨機的話就可能出現很多情況了,比如正態分布,隨機數集中在中間的區間。
為了讓結果盡可能接近理想情況,我們需要讓每一次生成的結果和之前的結果有關聯。
這里就有個種子的概念,以Java的 Random類來說,生成 Random對象有兩種方式,
Random r1 = new Random();Random r2 = new Random(100);System.out.println(r1.nextInt(10));System.out.println(r2.nextInt(10));
第二種就是用種子 100來生成一個隨機對象。
這里的原理是,Random會用算法把 100 轉換成隨機數區間 0 - 10 中某一個點,之后生成的隨機數都會與上一次結果有關而且呈均勻分布。
雖然這樣子可以生成接近理想的隨機數,但是也有個嚴重的問題,如果我們用同樣的種子去生成隨機數的話,就可能導致結果是可以預測的。
來看看下面這段代碼,你可以把它放到自己的環境上運行,看結果是不是跟我的一樣。
import java.util.Random;public class RandomTest { public static void main(String[] args) { Random r1 = new Random(); Random r2 = new Random(); Random r3 = new Random(100); Random r4 = new Random(100); System.out.println(r1.nextInt(10)); System.out.println(r1.nextInt(10)); System.out.println(r2.nextInt(10)); System.out.println(r2.nextInt(10)); System.out.println("<------------>"); System.out.println(r3.nextInt(10)); System.out.println(r3.nextInt(10)); System.out.println(r4.nextInt(10)); System.out.println(r4.nextInt(10)); }}
我這邊的輸出結果是
9320<------------>5050
可以看看你的代碼在分割線下面生成的隨機數是不是跟我一樣。如果沒有意外的話,你會得到跟我一致的結果。這里的原因就是種子,當選用同樣的種子時,在同樣的算法下,在相同區間中生成的隨機數序列是一致的,也就是說如果年會的抽獎算法用了某一個固定的種子,那么結果早在年會前就確定了。
所以想要生成一個盡可能完美的結果的話,種子要盡可能的隨性,比如取系統當前時間,再取參與人數取?;蛘呷∮?這樣才能保證隨機數的不確定性。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
成都哪家工作室拍藝術照拍的更好呢?1.木沙英花婚紗攝影工作室地址:嬌子北二路61號馮丹國際地鐵1號線金融城A出口顧客評價:能在沐沙英花拍婚紗照真的超級開心。剛到店的時候,感覺超級驚喜。給我的感覺是,只要是女生,我都會喜歡。2.八點半去照相館地址:較場壩街東方廣場B座停車場入口2單元1207室客戶評價:體驗很棒。提前兩天預約。到達當天,店家會提前打電話確認時間。到了就不用等了,馬上就可以開始化妝。3...
百威9000v6商業管理軟件使用方法?百威?解壓下載的bw9000ziu.zip地址百威9000商務管理軟件的安裝程序見bw9000ziu程序安裝目錄安裝程序.exe下一步,選擇后臺管理和前臺出納,然后選擇下一步,在“輸入服務器名稱或IP地址”列中輸入測試服務器的域名“windowsce.vicp.net,如下一步:根據向導,繼續下一步,完成軟件安裝后,前臺出納測試可運行桌面“百威9000商用PO...
16寸平板長寬多少厘米?16英寸板長35.4厘米,寬19.9厘米。16英寸是指筆記本電腦顯示屏的對角線長度,16英寸=40.6cm;根據主流筆記本電腦,筆記本電腦的長寬比為16:9,長:13.95英寸(35.4cm),寬:7.84英寸(19.9cm)。16寸電腦長寬多少?16英寸是指筆記本電腦顯示屏的對角線長度。根據主流筆記本16:9的比例,16英寸是指筆記本的長度為13.95英寸(35.4厘米)...