ตัวสร้างเลขสุ่มเทียม

ตัวสร้างเลขสุ่มเทียม (อังกฤษ: pseudorandom number generator หรือ PRNG) คือตัวสร้างเลขสุ่มประเภทหนึ่ง มีความสำคัญในทางคณิตศาสตร์ การเข้ารหัส และการเสี่ยงโชค ตัวสร้างเลขสุ่มเทียมมีทั้งได้จากฮาร์ดแวร์ซึ่งเป็นการสุ่มแท้ และจากซอฟต์แวร์ซึ่งเป็นการสุ่มเทียม (pseudorandomness)

คำอธิบาย แก้

ตัวสร้างเลขสุ่มเทียมหรือที่รู้จักกันในชื่อตัวสร้างบิตสุ่มแบบกำหนดได้ (Deterministic random bit generator: DRBG) เป็นขั้นตอนวิธีสำหรับใช้ในการสร้างลำดับของตัวเลขที่มีความใกล้เคียงกับคุณสมบัติของการสุ่ม ถึงลำดับตัวเลขที่ได้จากขั้นตอนวิธีตัวสร้างเลขสุ่มเทียมนี้จะใกล้เคียงกับลำดับเลขสุ่มแท้จริง แต่ก็ไม่ได้เป็นลำดับตัวเลขแบบสุ่มที่แท้จริงเนื่องจากลำดับตัวเลขที่ได้ออกมาจากตัวสร้างเลขสุ่มเทียมทั้งหมดได้มาจากกลุ่มเล็ก ๆ ของค่าเริ่มต้นที่กำหนดให้เป็นตัวตั้งต้น (seed) ของตัวสร้างเลขสุ่มเทียม ถึงจะมีตัวสร้างเลขสุ่มจากฮาร์ดแวร์ที่สามารถนำมาสร้างลำดับสุ่มแท้ได้ แต่ลำดับสุ่มเสมือนที่ได้จากตัวสร้างเลขสุ่มเทียมเองก็มีความสำคัญในทางปฏิบัติหลาย ๆ อย่าง ทั้งในด้านการจำลอง เช่นระบบกายภาพที่ใช้วิธีมอนติคาร์โล ในด้านการเข้ารหัส (cryptography) ในด้านการก่อกำเนิดกระบวนคำสั่ง (procedural generation) ส่วนใหญ่เกี่ยวข้องกับคอมพิวเตอร์กราฟิกส์ (โปรแกรมประยุกต์และวิดีโอเกมขั้นออกแบบ) ขั้นตอนวิธีเชิงสุ่มมากมายเองก็ได้อิทธิพลมาจากตัวสร้างเลขสุ่มเทียมเป็นส่วนหนึ่งในการแก้ปัญหา นอกจากการใช้งานแล้วการพิสูจน์ว่าตัวสร้างเลขสุ่มเทียมใช้งานได้จริงก็มีความสำคัญไม่แพ้กัน ซึ่งการพิสูจน์นี้ต้องอาศัยการวิเคราะห์ทางคณิตศาสตร์อย่างระมัดระวังในการทำให้แน่ใจได้ว่าตัวสร้างเลขสุ่มเทียมได้สร้างลำดับสุ่มเสมือนที่มีลักษณะสุ่มเพียงพอสำหรับการใช้งาน

ประวัติ แก้

 
ตัวอย่างการวนซ้ำของวิธีมิดเดิลสแควร์

ตัวสร้างเลขสุ่มเทียมที่อาศัยคอมพิวเตอร์ยุคแรก ๆ คิดค้นโดย จอห์น ฟอน นอยมันน์ ในปี ค.ศ. 1946 รู้จักกันในนามของ วิธีมิดเดิลสแควร์ (middle-square method) ขั้นตอนวิธีนี้คือ รับตัวเลขใดเข้ามาเป็นตัวตั้งต้นก็นำตัวเลขนั้นมายกกำลังด้วย 2 แล้วนำหลักตรงกลางออกจากผลลัพธ์ที่ได้ ก็จะได้ตัวเลขสุ่มขึ้นมาตามต้องการ ซึ่งสามารถนำตัวเลขนี้มาเป็นตัวตั้งต้นในการสร้างตัวเลขสุ่มอื่น ๆ ต่อไปได้

รหัสเทียม แก้

Input เป็นตัวเลข Output ยกกำลังสอง Input ที่นำตัวเลขตำแหน่งกลางออก

 
 int main ()
 {
 int in;
 int tmp =in*in;
 int tmp2=tmp;
 //หาจำนวนหลัก
 int length=0;
 while (tmp2>0)
 {
 length++;
 tmp2/=10;
 }
 int tmp3=tmp/pow (10,length/2) ; //ดึงส่วนข้างหน้าหลักกลางออกมา
 int tmp4= (length%2==0) ?tmp-tmp3* pow (10,length/2) +1: tmp-tmp3* pow (10,length/2) ;//ดึงส่วนข้างหลังหลักกลางออกมา
 int out = tmp3* pow (10,length/2) +tmp4; ี่ นำหลกตรงกลางออกแล
 return out;
 }

ปัญหาของ middle-square method คือท้ายที่สุดแล้วจะซ้ำกับลำดับสุ่มซึ่งสร้างขึ้นก่อนหน้า บางอันจะทำให้เกิดการวนซ้ำเร็วมากเช่น 00000 ซึ่งถ้านำไปทดลองทำตามวิธีนี้จะพบว่าได้ 0000000000 ทุกครั้ง ซึ่งฟอน นอยมันน์ ก็ตระหนักถึงปัญหาดังกล่าวเช่นกัน แต่เขาคิดว่ามันเพียงพอแล้วกับวัตถุประสงค์ในการใช้งานของเขา เขาได้ใช้กลวิธีการทางคณิตศาสตร์บางอย่างในการคาดเดาล่วงหน้าก่อนจะใส่เป็นตัวตั้งต้นซึ่งจะสามารถซ่อนข้อผิดพลาดดังกล่าวไว้ได้ ต่อมา middle-square method ถูกแทนที่จากวิธีการอื่นที่ซับซ้อนและมีความละเอียดอ่อนมากกว่าซึ่งลำดับสุ่มเสมือนที่ได้มีความใกล้เคียงลำดับสุ่มแท้จริงมากกว่า

คาบการวนซ้ำ แก้

ตัวสร้างเลขสุ่มเทียมเริ่มต้นจากสถานะเริ่มต้นอะไรก็ได้โดยใช้สถานะ seed (สถานะเริ่มต้น) เป็นตัวเริ่มต้นของตัวสร้างเลขสุ่มเทียม ซึ่งทำให้เกิดการวนซ้ำของลำดับได้โดยความยาวสูงสุดของลำดับสุ่มเสมือนก่อนเกิดการซ้ำเกิดขึ้นถูกวัดจากขนาดของสถานะซึ่งวัดได้โดยความยาวของบิต ความยาวคาบของการวนซ้ำสูงสุดจะยาวเพิ่มเป็น 2 เท่าทุก 1 บิตที่เพิ่มขึ้นจึงทำให้ง่ายที่จะสร้าง ตัวสร้างเลขสุ่มเทียมที่มีคาบการวนซ้ำที่ยาวเพียงพอสำหรับหลาย ๆ โปรแกรมในทางปฏิบัติ ถ้าสถานะของตัวสร้างเลขสุ่มเทียมมี n บิต คาบการวนซ้ำจะไม่ยาวเกินกว่า 2n เช่น เรจิสเตอร์เลื่อนป้อนกลับได้เชิงเส้นLinear Feedback Shift Registers (LFSRs) โดยปกติจะถูกทำให้มีคาบการวนซ้ำที่มีความยาวแน่นอนคือ 2n−1 ตัวสร้างสมภาคเชิงเส้นLinear congruential generators มีคาบการวนซ้ำซึ่งสามารถคำนวณได้จากการหาตัวประกอบ มิกซ์ Mixes (ไม่มีข้อบังคับ) มีคาบการวนซ้ำโดยเฉลี่ย 2n/2 มิกซ์ Mixes (ซึ่งสามารถย้อนกลับได้) มีคาบการวนซ้ำโดยเฉลี่ย 2n ถึงแม้ว่าตัวสร้างเลขสุ่มเทียมจะมีการซ้ำของผลลัพธ์หลังจากถึงคาบการวนซ้ำแต่การเจอตัวซ้ำไม่ได้หมายความว่ามันครบคาบการวนซ้ำเสมอไปเพราะคาบการวนซ้ำที่แท้จริงอาจจะยาวกว่านี้

รายการ แก้

 
ตัวอย่างของตัวสร้างเลขสุ่มเทียม Pseudo Random Generator Shift register
 
4 บิต Fibonacci LFSR พร้อมกับแผนภาพแสดงสถานะ
 
16 บิต Fibonacci LFS
 
16 บิต Galois LFSR

ขั้นตอนวิธีในการเข้ารหัสที่ใช้ตัวสร้างเลขสุ่มเทียม (PRNG) แก้

PRNG APIS ที่มีชื่อเสียง แก้

  • Random class ใน the Java programming language
  • SecureRandom class ใน the Java programming language

PRNG ที่ใช้ External entropy แก้

ตัวอย่างขั้นตอนวิธีอย่างง่าย แก้

วิธีตัดกลางของผลคูณ (Midproduct Method) แก้

  • 1.) เลือกตัวเลขสี่หลัก 2 ค่า x'0 และ x0
  • 2.) คูณค่า x'0 และ x0 เข้าด้วยกัน
  • 3.) ใชสี่หลักกลางของผลคูณที่ได้ในข้อ 2.) เป็นตัวเลขสุ่มเทียม x1
  • 4.) คูณ ค่า x0 และ x1
  • 5.) ทำซ้ำขั้นตอน 3.) และ 4.) จนกว่าจะได้ตัวเลขสุ่มเท่าจำนวนที่ต้องการ

วิธีตัวคูณคงที่ (Constant Multiplier Technique แก้

  • 1.) กำหนดค่าคงที่ k ขนาดสี่หลัก และค่าเริ่มต้น x0
  • 2.) คูณค่า k และ x0 เข้าด้วยกัน
  • 3.) ใชสี่หลักกลางของผลคูณที่ได้ในข้อ 2.) เป็นตัวเลขสุ่มเทียม x1
  • 4.) คูณ ค่า k และ x1
  • 5.) ทำซ้ำขั้นตอน 3.) และ 4.) จนกว่าจะได้ตัวเลขสุ่มเท่าจำนวนที่ต้องการ

วิธีการบวกเศษเหลือ (Additive Congruent Method) แก้

  • 1.) กำหนดตัวเลขจำนวนเต็ม x1, x2,..., xn
  • 2.) สร้าง xn+1, xn+2, ... จากตัวเลขในข้อ 1.)
  • 3.) สร้างตัวเลขสุ่มเทียมโดยใช้สูตร
  • xi= (xi-1+xi-n) (mod m)
  • Ri-n= xi/m

วิธีการใช้เศษเหลือ (Congruent Method) แก้

  • วิธีการที่นิยมใช้ที่สุดในการสร้างตัวเลขแบบสุ่มคือการใช้เศษเหลือของผลคูณ (Multiplicative Congruential Method)
  • โดยใช้สูตร xi+1 =axi (mod m)
  • ด้วยการกำหนดค่าให้ a และ m ซึ่งจะต้องไม่เป็นค่าลบและกำาหนดค่าเริ่มต้น x0

เวลาในการทำงาน หน่วยความจำที่ใช้ หรือการพิสูจน์ความถูกต้อง แก้

  • ขึ้นกับแต่ละขั้นตอนวิธีเพราะขั้นตอนวิธีต่างกันจะมีเวลาในการทำงานและหน่วยความจำที่ใช้ต่างกัน การพิสูจน์ความถูกต้องของตัวสร้างเลขสุ่มเทียมแต่ละขั้นตอนวิธีก็ต่างกันด้วย

ปัญหา แก้

  • คาบเวลาการซ้ำสั้นกว่าที่คาดเอาไว้สำหรับบางสถานะ seed (สถานะเริ่มต้น)
  • ขาดเอกรูป (Non-Uniform) ในการแจกแจงลำดับสุ่มเสมือนที่สร้างขึ้นมาเมื่อสร้างตัวเลขสุ่มมาแล้วเป็นจำนวนมาก
  • เกิดความสัมพันธ์กับค่าที่อยู่ติดกันซึ่งอาจทำให้ผู้โจมตีสามารถคาดเดาตัวต่อไปได้
  • การแจกแจงที่มีมิติหรือขอบเขตที่ไม่ดี (poor dimension) ในลำดับสุ่มเสมือนที่ได้จากตัวสร้างเลขสุ่มเทียม
     
    ปริภูมิ 3 มิติ ของ 100,000 ค่าที่สร้างขึ้นมาด้วย แรนดูRANDU โดยจุดแต่ละจุดแสดง 3 ลำดับย่อยของตัวเลขสุ่มเทียม

จุดบกพร่องเหล่านี้มีตั้งแต่ไม่สามารถสังเกตเห็นได้จนกระทั่งสามารถเห็นได้อย่างชัดเจน ตัวอย่างหนึ่งก็คือแรนดู RANDU ซึ่งเป็นขั้นตอนวิธีในการสร้างเลขสุ่มเทียมที่ใช้กันมากว่าทศวรรษบนคอมพิวเตอร์ mainframe ซึ่งไม่สมบูรณ์แบบ แต่เนื่องด้วยในสมัยนั้นวิทยาการในการตรวจสอบที่มียังมีไม่เพียงพอ ทำให้ความไม่สมบูรณ์แบบดังกล่าวไม่ถูกตรวจพบเป็นระยะเวลายาวนาน อีกตัวอย่างหนึ่งของปัญหาก็คือการวิจัยในหลาย ๆ สาขาในช่วงเวลาดังกล่าวซึ่งอาศัยการเลือกแบบสุ่ม การจำลองแบบวิธีมอนติคาโล Monte Carlo method หรือในทางอื่น ๆ ได้ผลการวิจัยที่มีความน่าเชื่อถือน้อยกว่าที่ควรจะเป็น

ตัวสร้างเลขสุ่มเทียม (PRNG) กับการเข้ารหัส แก้

ลำดับสุ่มเสมือนส่วนใหญ่ที่ได้จากขั้นตอนวิธีตัวสร้างเลขสุ่มเทียมเป็นหนึ่งในแกนกลางทั้งทางทฤษฏีและทางปฏิบัติของการเข้ารหัส (Cryptography) ไม่ว่าจะมีวิธีการหรือไม่มีวิธีการในการจำแนกลำดับสุ่มเสมือนคุณภาพสูงของตัวสร้างเลขสุ่มเทียมออกจากลำดับสุ่มแท้จริงโดยที่ยังไม่รู้ขั้นตอนวิธีที่ใช้และยังไม่รู้สถานะเริ่มต้นที่ใช้

ความมั่นคงและระเบียบวิธีการในการเข้ารหัสของขั้นตอนวิธีตัวสร้างเลขสุ่มเทียม มีใช้กันส่วนมากตั้งอยู่บนสมมุติฐานที่ว่าเป็นไปไม่ได้ที่จะแยกลำดับสุ่มเสมือนจากการใช้งานของตัวสร้างเลขสุ่มเทียมที่เหมาะสมออกจากลำดับสุ่มแท้จริงได้ ตัวอย่างหนึ่งที่เห็นได้ชัดคือ กระแสข้อมูลรหัส (stream ciphers) ซึ่งส่วนมากทำงานโดยใช้ตัวดำเนินการทางตรรกศาสตร์ exclusive or (XOR) ระหว่างข้อความปกติกับผลลัพธ์จากตัวสร้างเลขสุ่มเทียมผลิตข้อความรหัส (ciphertext) ออกมา การออกแบบตัวสร้างเลขสุ่มเทียม ที่สามารถเข้ารหัสได้อย่างเพียงพอต่อความต้องการในปัจจุบันนี้เป็นสิ่งที่ยากอย่างสุดสุดเพราะว่า ตัวสร้างเลขสุ่มเทียม ที่ออกแบบนี้นอกจากจะต้องสอดคล้องกฎเกณฑ์ข้อกำหนดพื้นฐานสำหรับตัวสร้างเลขสุ่มเทียมทั่วไปที่ไม่ได้ใช้เข้ารหัสแล้วยังต้องสอดคล้องกับกฎเกณฑ์ข้อกำหนดต่าง ๆ เพิ่มเติมเพื่อเป็นเครื่องยืนยันว่าสามารถใช้เข้ารหัสได้อย่างเพียงพอ

ตัวสร้างเลขสุ่มเทียม (PRNG) ในการเข้ารหัสที่ปลอดภัย แก้

ตัวสร้างเลขสุ่มเทียมที่เหมาะสำหรับใช้งานในการเข้ารหัส เรียกว่าตัวสร้างเลขสุ่มเทียมที่มีความมั่นคงเชิงรหัส cryptographically secure PRNG (CSPRNG) ขณะที่ตัวสร้างเลขสุ่มเทียมทั่ว ๆ ไปนั้นแค่ผ่านการทดสอบทางสถิติจำนวนหนึ่งก็พอ ส่วนตัวสร้างเลขสุ่มเทียมที่มีความมั่นคงเชิงรหัสต้องผ่านการทดสอบทางสถิติทั้งหมดและต้องอยู่ภายในเวลาแบบฟังก์ชันพหุนามกับขนาดของค่าเริ่มต้น (seed) ถึงแม้ว่าคุณสมบัติดังกล่าวจะไม่สามารถพิสูจน์ได้ในทางปฏิบัติก็ตาม เรายังสามารถแสดงหลักฐานข้อพิสูจน์ที่แข็งแรงเพียงพอให้เห็นได้ว่าตัวสร้างเลขสุ่มเทียมที่สร้างขึ้นมีความมั่นคงเชิงรหัสหรือไม่ โดยลดรูปคุณสมบัติดังกล่าวไปสู่ปัญหาที่ยากทางคณิตศาสตร์ที่เป็นที่รู้จักกันซึ่งเป็นหนึ่งในกลุ่มปัญหา NP เช่นการแยกตัวประกอบจำนวนเต็มที่มีหลาย ๆ หลัก โดยปกติแล้วต้องใช้เวลาหลายปีในการตรวจสอบกว่าจะสามารถยืนยันได้ว่าขั้นตอนวิธีตัวสร้างเลขสุ่มเทียมใด ๆ นั้นจะเป็นตัวสร้างเลขสุ่มเทียมที่มีความมั่นคงเชิงรหัสหรือไม่

รายการของตัวสร้างเลขสุ่มเทียมที่มีความมั่นคงเชิงรหัส (CSPRNG) แก้

  • Stream ciphers
  • Block ciphers วิ่งใน counter หรือ output feedback mode
  • ตัวสร้างเลขสุ่มเทียมที่ออกแบบมาเป็นอย่างดีสำหรับการเข้ารหัสโดยเฉพาะ
  • การผสมระหว่างขั้นตอนวิธีตัวสร้างเลขสุ่มเทียมดั้งเดิมหลาย ๆ ตัวโดยมีเป้าหมายในการกำจัดลำดับที่ดูเหมือนไม่ได้สุ่มออกไป
  • การออกแบบขั้นตอนชนิดพิเศษที่ตั้งอยู่บนสมมุติฐานอย่างยากทางคณิตศาสตร์เช่น Micali-Schnorr, ขั้นตอนวิธี Blum Blum Shub ซึ่งได้พิสูจน์ความมั่นคงของรหัสได้เป็นอย่างดีไว้แล้ว ขั้นตอนวิธีเหล่านี้จะใช้เวลาช้ากว่าตัวสร้างเลขสุ่มเทียมแบบอื่นและใช้งานไม่ได้ในทางปฏิบัติด้านอื่น ๆ นอกจากใช้ในการเข้ารหัสเท่านั้น

BSI evaluation criteria แก้

หน่วยงานความมั่นคงทางสารสนเทศของเยอรมัน (The German Federal Office for Information Security: BSI) ได้จัดตั้งกฎเกณฑ์ในการกำหนดคุณภาพของตัวสร้างเลขสุ่มเทียมขึ้นดังนี้

  • K1 ลำดับสุ่มเสมือนซึ่งมีโอกาสต่ำที่หลักที่อยู่ติดกันจะมีค่าซ้ำกัน
  • K2 ลำดับสุ่มเสมือนซึ่งไม่สามารถแยกจากลำดับสุ่มแท้จริงด้วยการทดสอบทางสถิติที่แน่ชัด การทดสอบโมโนบิต monobit test (จำนวนที่เท่ากันของเลขศูนย์และเลขหนึ่งในลำดับ), การทดสอบโปกโกอร์ poker test (ตัวอย่างพิเศษของ chi-square test), การทดสอบการวิ่งruns test (นับจำนวนความถี่ของการวิ่งของความยาวที่ต่าง ๆ กัน), การทดสอบการวิ่งระยะยาว longruns test (ตรวจสอบการวิ่ว่ามี ความยาวมากกว่า 34 or หรือใหญ่กว่า 20 000 bits ในลำดับหรือไม่ — both from BSI2 (AIS 20, v. 1, 1999) and FIPS (140-1, 1994), และ การทดสอบความผิดพลาดอันเนื่องมากจากความสัมพันธ์autocorrelation test ใจความสำคัญของการทดสอบเหล่านี้คือลำดับย่อยใด ๆ ที่เลือกมาจะต้องไม่มีข้อมูลใดของตัวถัดไปของลำดับปรากฏอยู่
  • K3 สำหรับในทางปฏิบัติเป็นไปไม่ได้ที่ผู้โจมตีใด ๆ จะคำนวณหรือเดาตัวเลขสุ่มได้จากลำดับย่อยใด ๆ ที่ได้มา ตัวก่อนหน้าหรือตัวถัดไปของลำดับหรือจากสถานะใด ๆ ของตัวสร้างเลขสุ่มเทียม
  • K4 สำหรับในทางปฏิบัติเป็นไปไม่ได้ที่ผู้โจมตีใด ๆ จะคำนวณหรือเดาตัวเลขสุ่มได้จาก สถานะภายในของตัวสร้างเลขสุ่มเทียม ตัวก่อนหน้าหรือตัวถัดไปของลำดับหรือสถานะก่อนหน้าใด ๆ ของ ตัวสร้างเลขสุ่มเทียม

สำหรับโปรแกรมในการเข้ารหัสตัวสร้างเลขสุ่มเทียม (PRNG) ที่ครบตามเงื่อนไขของมาตรฐาน K3 หรือ K4 เท่านั้นที่ยอมรับได้ว่าเป็นตัวสร้างเลขสุ่มเทียมที่มีความมั่นคงเชิงรหัส (CSPRNG)

การใช้งาน แก้

การแจกแจงไม่เอกรูป (Non-Uniform Distribution) แก้

ตัวเลขที่เลือกมาจากการแจกแจงความน่าจะเป็นที่ไม่เอกรูปสามารถสร้างโดยใช้การแจกแจงเอกรูป (uniform distribution ) ตัวสร้างเลขสุ่มเทียม PRNG และ function ที่เกี่ยวข้องกับการแจกแจง 2 ประเภท

1: cumulative distribution function   ของ : แก้

 

 . เลือก c แบบสุ่มจากการแจกแจงเอกรูปและหาความหนาแน่นของความน่าจะเป็นจะได้

 

ดังนั้น

 

คือตัวเลขแบบสุ่มที่ได้จากการแจกแจง .

2: ตัวผกผัน Cumulative Gaussian distribution แก้

  พร้อมกับ ตัวสร้างเลขสุ่มเทียม เอกรูปแบบอุดมคติในช่วง (0, 1) เป็น input x จะให้ลำดับของค่าบวกซึ่งเป็นการแจกแจงแบบ Gaussian distribution ออกมา

  • เมื่อใช้ในทางปฏิบัติการแสดงตัวเลขจะต้องมีการตัดหางที่ยาวไม่มีที่สิ้นสุดของการแจกแจงให้เป็นค่าที่มี่ที่สิ้นสุด
  • การคำนวณซ้ำหลายครั้ง ควรลดให้เป็นแบบ Ziggurat algorithm เพื่อความเร็วที่มากขึ้นของการสร้างด้วยหลักการคล้ายกับการแจกแจงเรย์ลี (Rayleigh distribution) และการแจกแจงปัวซง (Poisson distribution) ก็สามารถนำมาใช้ในการสร้างการแจกแจงแบบไม่เป็นเอกรูปได้เช่นกัน

โปรแกรมประยุกต์และการประยุกต์ใช้งานในด้านอื่น ๆ แก้

  • KeyPass
  • QFX keyscramble
  • โปรแกรมสุ่มเลขบัตรประจำตัวประชาชน-สุ่มเลขบัตรประชาชนสำหรับใช้ในการสมัครสมาชิกเว็บต่าง ๆ เพื่อความปลอดภัยของผู้สมัครสมาชิก
  • Passward Generator
  • การพยากรอากาศ
  • การทำนายอนาคต
  • GPS สามารถหาเวลาที่ต่างกันระหว่างเครื่องรับกับดาวเทียมได้อย่างมีประสิทธิภาพและมีราคาไม่แพงทำให้กลายเป็นเครื่องมือที่ทุกคนสามารถใช้ได้
  • การโคจรของดาวเทียม ดาวเทียมทุกดวงสามารถใช้คลื่นความถี่เดียวกันได้โดยไม่เกิดการรบกวนต่อกัน ดาวเทียมแต่ละดวงจะมี Pseudo Random code เป็นของเฉพาะตัว ดังนั้นเวลาเครื่องรับนำรหัสมาใช้ต้องให้ถูกตามหมายเลขดาวเทียม
  • ทฤษฏีความโกลาหล (Chaos theory) ปรากฏการณ์ที่ดูเหมือนว่าเกิดขึ้นอย่างสะเปะสะปะแต่แฝงไปด้วยความเป็นระเบียบ
  • วิธีการชนะที่รูเล็ตคาสิโนออนไลน์จากจุดบกพร่องของตัวสร้างเลขสุ่มเทียมของคาสิโนออนไลน์

ดูเพิ่ม แก้

อ้างอิง แก้

  • Michael Luby, Pseudorandomness and Cryptographic Applications, Princeton Univ Press, 1996. A definitive source of techniques for provably random sequences.
  • Donald Knuth. The Art of Computer Programming, Volume 2: Seminumerical Algorithms, Third Edition. Addison-Wesley, 1997. ISBN 0-201-89684-2. Chapter 3, pp. 1–193.

Extensive coverage of statistical tests for non-randomness.