การสร้างตัวเลขสุ่ม

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) ที่ซับซ้อนขึ้นซึ่งสามารถให้ความสุ่มที่แท้จริงโดยใช้กระบวนการทางกายภาพ