ฉันได้ออกแบบตัวสร้างแบบสุ่มอย่างง่ายที่วนสองตัวเลขด้วยวิธีที่วุ่นวายโดยใช้วิธีการคูณและโมดูลัส มันใช้งานได้ดีสำหรับการที่
ถ้าฉันจะใช้มันเป็นเครื่องกำเนิดไฟฟ้ารหัส แต่มันจะมีความเสี่ยงต่อการโจมตีธรรมดาที่รู้จักเนื่องจากผู้โจมตีสามารถย้อนกลับวิศวกรเมล็ดจากชุดของตัวเลขสุ่มในลักษณะที่มีประสิทธิภาพในการคำนวณ
หากต้องการพิสูจน์ตัวเลขที่เสียหายให้ค้นหาคู่ค่าทางกฎหมายที่สร้างค่า 7 ศูนย์ในหนึ่งแถวในช่วง [0; 255] โดยใช้พลังงานเพียงเล็กน้อยเวลา CPU ฯลฯ เท่าที่จะทำได้
นี่คือตัวสร้างแบบสุ่มที่เขียนใน JavaScript:
function seed(state1,state2){
//Constants
var mod1=4294967087
var mul1=65539
var mod2=4294965887
var mul2=65537
function random(limit){
//Cycle each state variable 1 step
state1=(state1*mul1)%mod1
state2=(state2*mul2)%mod2
//Return a random variable
return (state1+state2)%limit
}
//Return the random function
return random
}
//Initiate the random generator using 2 integer values,
//they must be in the ranges [1;4294967086] and [1;4294965886]
random=seed(31337,42)
//Write 7 random values in the range [0;255] to screen
for(a=0;a<7;a++){
document.write(random(256)+"<br>")
}
ผมได้ทำเครื่องมือสำหรับการทดสอบคู่จำนวนผู้สมัครก็สามารถพบได้ที่นี่
สำหรับ 3 วันถัดไปไม่อนุญาตสปอยเลอร์คำตอบต้องมีเพียงชุดตัวเลขและแน่นอนควรเป็นชุดที่แตกต่างจากที่โพสต์โดยนักแก้ปัญหาก่อนหน้า หลังจากนั้นคุณควรโพสต์รหัสและอธิบายวิธีการของคุณ
แก้ไขการกักกันมีมากกว่า:
คำตอบควรมีทั้งชุดตัวเลขและคำอธิบายที่ไม่ซ้ำกันและรหัสเพื่อบันทึกวิธีการแก้ปัญหา
ทางออกที่งดงามที่สุดชนะ
สำหรับบันทึก:
การเขียนโปรแกรมที่สามารถหาทางออกได้อย่างรวดเร็วนั้นสวยงาม
การสร้างโปรแกรมที่ใช้คุณสมบัติของ GPU อย่างมีประสิทธิภาพในการทำมันให้เร็วขึ้นเป็นสิ่งที่สวยงาม
การทำงานบนชิ้นส่วนของ "Museumware" นั้นสง่างาม
การค้นหาวิธีการแก้ปัญหาที่สามารถนำมาใช้อย่างเป็นไปได้โดยใช้เพียงปากกาและกระดาษนั้นสวยงามมาก
การอธิบายวิธีการแก้ปัญหาของคุณในลักษณะที่ให้คำแนะนำและเข้าใจได้ง่ายนั้นสง่างาม
การใช้คอมพิวเตอร์หลายเครื่องหรือมีราคาแพงมากนั้นไม่เหมาะสม