Arduino:
การสร้างตัวเลขสุ่ม
วิธีการ:
Arduino มีฟังก์ชันสำหรับสร้างตัวเลขสุ่มอย่างง่ายดาย: randomSeed()
และ random()
เพื่อเริ่มต้น ให้กำหนดค่าเริ่มต้นสำหรับตัวกำเนิดตัวเลขสุ่มเพื่อให้แน่ใจว่าได้ลำดับของตัวเลขที่แตกต่างกันทุกครั้งที่โปรแกรมของคุณทำงาน วิธีการที่มักใช้กันคือการกำหนดเมล็ดที่อ่านค่าแอนะล็อกจากพินที่ไม่ได้เชื่อมต่อ
void setup() {
Serial.begin(9600);
// ตั้งค่าเริ่มต้นสำหรับเมล็ดสุ่ม
randomSeed(analogRead(0));
}
void loop() {
// สร้างตัวเลขสุ่มระหว่าง 0 ถึง 99
int randomNumber = random(100);
Serial.println(randomNumber);
delay(1000); // หน่วงเวลาเพื่อความชัดเจนของผลลัพธ์
}
โปรแกรมด้านบนตั้งค่าเริ่มต้นตัวกำเนิดตัวเลขสุ่มในฟังก์ชัน setup()
และสร้างตัวเลขใหม่ระหว่าง 0 ถึง 99 ในแต่ละรอบการทำงาน แล้วแสดงตัวเลขไปยัง Serial Monitor
ตัวอย่างผลลัพธ์:
42
17
93
...
ศึกษาเพิ่มเติม
ฟังก์ชัน random()
ของ Arduino ใต้ฮู้ดใช้ตัวกำเนิดตัวเลขสุ่มเทียม (PRNG) ซึ่งตามลำดับที่ถูกกำหนดไว้แต่ดูเหมือนสุ่มทางสถิติ ค่าเริ่มต้นหรือเมล็ดของลำดับมีผลอย่างมากต่อความไม่สามารถทายได้ของมัน ดังนั้นการใช้ randomSeed()
ด้วยอินพุตที่ค่อนข้างสุ่มเป็นจุดเริ่มต้นนั้นเป็นวิธีที่ใช้กันบ่อย สำคัญต้องทราบว่าความสุ่มที่สร้างโดย Arduino เพียงพอสำหรับโปรเจกต์ระดับงานอดิเรกที่สุด แต่อาจไม่ผ่านเกณฑ์สำหรับแอปพลิเคชันทางด้านความปลอดภัยระดับสูงเนื่องจากความคาดเดาได้ในระยะยาว สำหรับวัตถุประสงค์ด้านการเข้ารหัสลับ ควรพิจารณาใช้อัลกอริทึมและตัวกำเนิดตัวเลขสุ่มฮาร์ดแวร์ (HRNGs) ที่ซับซ้อนขึ้นซึ่งสามารถให้ความสุ่มที่แท้จริงโดยใช้กระบวนการทางกายภาพ