Tags:
Node Thumbnail

เอนจินจาวาสคริปต์ V8 ที่เป็นพื้นฐานสำคัญของโครม อิมพลีเมนต์ฟังก์ชั่น Math.random() ด้วยฟังก์ชั่น MWC1616 มาโดยตลอด แต่หลังจากรุ่น 4.9.41.0 จะปรับเป็นฟังก์ชั่น xorshift128+

ฟังก์ชั่น MWC1616 ทำงานได้เร็วและเรียบง่าย แต่ปริมาณเลขสุ่มที่ผลิตได้ก่อนจะเริ่มซ้ำไม่มากนัก ในกรณีที่ดีที่สุดอาจจะได้ถึง 2^32 บิต แต่บางสถานะเริ่มต้นก็สร้างเลขซ้ำหลังจากสุ่มไปเพียง 40 ล้านบิต ในแง่สถิติแล้วก็มีคุณสมบัติไม่ดีนัก ขณะที่ฟังก์ชั่น xorshift128+ มีคุณบัติที่ดีกว่ามาก สามารถสร้างเลขสุ่มได้ถึง 2^128 - 1 บิต และคุณสมบัติทางสถิติก็ดีกว่า

ทาง V8 ย้ำกว่า xorshift128+ ยังไม่ดีพอสำหรับการใช้งานเพื่อการเข้ารหัส และหากใช้เพื่อสร้างกุญแจเข้ารหัส ควรใช้ฟังก์ชั่น window.crypto.getRandomValues ที่สร้างเลขสุ่มได้ดีกว่าแทน โดยจะแลกกับระยะเวลาสร้างเลขสุ่มที่นานขึ้น

ที่มา - V8 Project

ภาพแสดงรูปแบบของเลขสุ่มที่ได้จาก Math.random ใน V8 ก่อนและหลังจากเปลี่ยนฟังก์ชั่น โดย Mike Malone

alt="upic.me"

Get latest news from Blognone

Comments

By: itpcc
ContributoriPhoneRed HatUbuntu
on 17 December 2015 - 22:04 #869235
itpcc's picture

สมบัติิ -> สมบัติ
คุณบัติ -> คุณสมบัติ


บล็อกส่วนตัวที่อัพเดตตามอารมณ์และความขยัน :P

By: peacedev
AndroidUbuntuWindows
on 17 December 2015 - 22:40 #869246

การกระจายตัวดีขึ้นเยอะเลย
เขียน HTML5 app มาไม่ยักรู้ว่ามัน กระจุกตัว ไม่เคยเทส distribution