[ภาษาR] ช่วยอธิบายความหมายของฟังก์ชั่น set.seed(123) ให้เข้าใจง่ายหน่อยค่ะ แล้วใช้เพื่ออะไรคะ

เนื่องจากหาในเน็ตแล้วทุกๆเว็บอธิบายงงมาก 
ยกตัวอย่างมายิ่งดีเลยค่ะ
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 4
TL;DR  set.seed(seed)
http://rfunction.com/archives/62
> set.seed(5)
> rnorm(5)
[1] -0.84085548  1.38435934 -1.25549186  0.07014277  1.71144087
> set.seed(5)
> rnorm(5)
[1] -0.84085548  1.38435934 -1.25549186  0.07014277  1.71144087



คอมพิวเตอร์มีเลขสุ่มอยู่สองแบบ

- deterministic random number generator  เลขสุ่มแบบทำซ้ำ  คาดการณ์ได้
ใช้วิธีการทางคณิตศาสตร์สร้างเลข  "ดูเหมือนสุ่ม"  เรียกว่า pseudo-random number generator (PRNG)
ซึ่งวิธีการนี้จะมี  "ค่าเริ่มต้น"  ของสถานะ generator เรียกว่า seed
นั่นคือ  ถ้ากำหนดการสุ่มด้วย seed ที่เหมือนกัน  จะได้การสุ่มที่เหมือนกัน
    -  ข้อดีคือ  สุ่มได้ทีละมาก ๆ ได้เร็วดั่งใจ,  การคาดเดาการสุ่มได้ดังกล่าว  ทำให้ดีบักโปรแกรมที่เราทราบผลลัพธ์ที่ควรจะเป็นได้
    -  ข้อเสียคือ  หากโชคร้าย seed ตกอยู่ภายใต้ฝ่ายตรงข้าม  ฝ่ายตรงข้ามก็จะทราบการสุ่มในอนาคตทั้งหมด  จนกว่าเราจะเปลี่ยน seed โดยไม่ให้ฝ่ายตรงข้ามทราบได้อีก

- non-deterministic random number generator  เลขสุ่มแบบทำซ้ำไม่ได้  คาดการณ์ไม่ได้
นำเข้าค่าสุ่มจากแหล่งกำเนิดภายนอกโปรแกรม  แหล่งเดียว  หรือหลาย ๆ แหล่งมาผสมผสานกัน
เรียกว่า true random number generator (TRNG)
เช่น  เวลาเปิดเครื่อง,  จำนวนโปรเซสในระบบ,  เซ็นเซอร์อุณหภูมิ,  เซ็นเซอร์ภาพ เสียง  ฯลฯ    [Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
    -  ข้อจำกัดคือ  "ความเร็ว"  กล่าวคือความเร็วการผลิตเลขสุ่มขึ้นกับความเร็ว input/output ที่รับจากแหล่งกำเนิดภายนอก
และความเร็วการของสุ่มของแหล่งกำเนิดภายนอกนั้น  เช่น  การเปลี่ยนแปลงอุณภูมิ  ภาพ  เสียง ฯลฯ
    -  ข้อดีคือ  จะไม่มีใคร  มีทางที่จะทำนายการสุ่มได้เลย  (ถ้าออกแบบไว้ดี  รัดกุมเพียงพอและอาจให้เป็นชั้นความลับไม่เปิดเผย)

ดังนั้นสิ่งที่ทำกันก็คือใช้ TRNG สุ่มเพื่อได้ seed มา
แล้วนำ seed นั้นใช้กับ PRNG อีกที    [Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้

จะเห็นได้ว่ากับแค่  "การสุ่ม"  จริง ๆ แล้วไม่ใช่เรื่องเล่น ๆ เลย  ทว่าเป็นเรื่องของผู้ชำนาญการ
เพราะสามารถเป็นจุดอ่อนของ cryptography ใด ๆ ได้เลยทีเดียวครับ

learn more   [Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่