Score:2

จะใช้ประโยชน์จาก RNG ของ Java เพื่อค้นหาคลัสเตอร์ได้อย่างไร

ธง sy

ป้อนคำอธิบายรูปภาพที่นี่

ในภาพด้านบน คุณจะเห็นตารางพิกัดที่มีจุดสีเขียวแบบสุ่ม แต่ละจุดมีโอกาสปลอมเป็นสีเขียว 1/10 สิ่งที่ฉันกำลังมองหาคือกลุ่มของจุดสีเขียวเหล่านี้ภายในรัศมี ~8 (ละเว้นหน้ากากด้านในที่แสดง) กล่าวอีกนัยหนึ่งว่าฉันกำลังมองหาพื้นที่ความหนาแน่นสูงที่ไม่น่าเป็นไปได้ทางสถิติของจุดสีเขียวเหล่านี้ หัวใจหลักของปัญหานี้คือ Java RNG ที่พบใน java.util.Random (แหล่งที่มาที่นี่). รหัสสำหรับกำหนดว่าจุดเป็นสีเขียวจะลดระดับลงมาจากฟังก์ชันแฮชนี้หรือไม่ อินพุตมีค่าคงที่ $k$และพิกัดของจุด $x$ และ $y$.

เมล็ดยาว = ((k + (ยาว) (x * x * 4987142) + (ยาว) (x * 5947611) + (ยาว) (y * y) * 4392871L + (ยาว) (y * 389711) ^ 987234911L) ^ 0x5DEECE66DL) & ((1L << 48) - 1);
int บิต วาล;
ทำ
{
    เมล็ด = (เมล็ด * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1);
    bits = (int)((อู่หลง)seed >> 17);
    val = บิต % 10;
} ในขณะที่ (บิต - วาล + 9 < 0);

คืนค่า == 0;

มีอยู่แล้ว การวิจัยเล็กน้อยเกี่ยวกับปัญหานี้ ในอดีต แต่ฉันไม่มีความรู้พอที่จะช่วยเหลือเพิ่มเติม สิ่งที่พบก็คือ ศักยภาพ คลัสเตอร์ที่มีขนาดเล็ก 2x2 และ 3x3 สร้างรูปแบบเมื่อเปรียบเทียบกับที่แตกต่างกัน $k$ ค่า ป้อนคำอธิบายรูปภาพที่นี่

สิ่งนี้อาจให้เงื่อนงำว่าพิกัดใดที่การค้นหาควรเน้นการคำนวณมากกว่าที่กำหนด $k$แต่ฉันไม่มั่นใจ ต่อไปนี้เป็นแผนที่ความหนาแน่นของขนาดคลัสเตอร์สำหรับตัวอย่างหนึ่งๆ $k$. คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับแหล่งที่มาของรูปภาพเหล่านี้ ที่นี่.

ป้อนคำอธิบายรูปภาพที่นี่

ณ ตอนนี้ ฉันเป็นเพียงกำลังดุร้ายตรวจสอบจำนวนคลัสเตอร์ของแต่ละพิกัด และข้ามพิกัดหากคลัสเตอร์ต่ำเกินไปสำหรับอันถัดไปที่จะมีคลัสเตอร์ที่มีขนาดเพียงพอ ซึ่งส่วนใหญ่เป็นเพราะฉันกำลังมองหาสถิติ ค่าผิดปกติ

สิ่งที่ฉันหวังคือมีรูปแบบที่ใช้ประโยชน์ได้ในอัลกอริทึมนี้ การย้อนกลับแฮชนี้สามารถทำได้จริงในทางใดทางหนึ่ง หรือมีการเพิ่มประสิทธิภาพที่สำคัญใน วิธีการปัจจุบันของฉัน.

บางทีแนวทางที่เป็นไปได้ในอนาคตคือการดูว่ารูปแบบขัดแตะยังคงมีอยู่สำหรับกลุ่มที่ใหญ่ขึ้นและใหญ่ขึ้นหรือไม่ แต่ภาพอื่นในโพสต์นั้นดูเหมือนจะบ่งบอกว่ามันจะหายไปจากสัญญาณรบกวน

kr flag
ทำไมคุณถึงคิดว่าคำถามนี้เกี่ยวข้องกับการเข้ารหัส รหัสใช้หลอก RNG ซึ่งหมายความว่าสำหรับเมล็ดพันธุ์เดียวกันก็จะให้ผลลัพธ์ **เหมือนกัน** เสมอ นี่เป็นคำถามเกี่ยวกับการเขียนโปรแกรมล้วนๆ และสามารถตอบได้ดีกว่าใน SO
Paul Uszak avatar
cn flag
@mentallurg เดี๋ยวก่อน แม้จะค่อนข้างสวยงาม แต่ประเด็นหลักของคำถามนี้คือการจัดการ / การแสวงหาผลประโยชน์จาก RNG นั่นคือการโจมตีซึ่งตรงกับหัวข้อที่นี่ ตัวแปร $k$ แตกต่างกันไปตามคำจำกัดความ และนั่นคือปม ฟอรัม .SE จำนวนมากทับซ้อนกันซึ่งฉันเดาว่าเป็นผลมาจากการเติบโตแบบออร์แกนิกที่ไม่มีการควบคุม
kr flag
@PaulUszak: คำถามเกี่ยวกับ **หลอก RNG** รหัสดังกล่าวใช้ class Random ซึ่งใช้ PRNG ส่วนสำคัญอย่างหนึ่งของรหัสคือ สำหรับทุกอาร์กิวเมนต์ใหม่ จะมีการคำนวณเมล็ดพันธุ์ใหม่ การตั้งค่าเมล็ดพันธุ์เดียวกันนำไปสู่การสร้างผลลัพธ์ **เหมือนกัน** สิ่งนี้ไม่เกี่ยวข้องกับการจัดการ และคำถามที่ถามเกี่ยวกับวิธี **ปรับปรุงประสิทธิภาพ**
Gabe avatar
sy flag
@mentallurg ฉันคิดว่าคำถามนี้มีจิตวิญญาณของการเข้ารหัสเป็นอย่างมาก ฉันไม่ได้ขอรหัสเพื่อปรับปรุงประสิทธิภาพ ฉันกำลังมองหาทางลัดทั่วไป ป้าย **pseudo-random-generator** มีประโยชน์อย่างไรหากคำถามเกี่ยวกับ PRNG นอกประเด็น???
Maarten Bodewes avatar
in flag
ฉันเห็นว่าสิ่งนี้มีประโยชน์บ้างสำหรับการวิเคราะห์ PRNG แม้ว่าฉันจะสงสัยว่าคำถามนี้เกี่ยวข้องกับคำถามการวิจัยมากน้อยเพียงใดแทนที่จะเป็นคำถามที่สามารถตอบได้อย่างเป็นกลางโดยไม่ต้องมีการวิจัย
kr flag
@Gabe: 1) แท็กในไซต์นี้มีเหตุผลเนื่องจากใช้ตัวสร้างแบบสุ่มหลอกสำหรับงานเข้ารหัสจำนวนมาก หากไม่ได้ใช้ PRNG สำหรับงานเข้ารหัส แสดงว่าไม่เกี่ยวกับไซต์นี้ 2) คุณเขียนว่า "*I am just **brute force**... สิ่งที่ฉันหวังคือ... มี **การเพิ่มประสิทธิภาพที่สำคัญ***" หมายความว่าคุณกำลังมองหาการเพิ่มประสิทธิภาพ หากปัญหาเกี่ยวข้องกับการเข้ารหัส นี่อาจเป็นคำถามที่เกี่ยวข้อง แต่เนื่องจากคุณไม่ได้แสดงความเชื่อมโยงใดๆ ของปัญหาของคุณกับการเข้ารหัส ดังนั้นการเพิ่มประสิทธิภาพนี้จึงอยู่นอกหัวข้อในไซต์นี้
the default. avatar
id flag
นี่ไม่ใช่การโจมตีด้วยการเข้ารหัส แต่เป็นการเขียนโค้ดใหม่เพื่อไม่ให้คำนวณ `deltas' ใหม่ทุกครั้ง และนำผลลัพธ์ของการคำนวณในอดีตมาใช้ซ้ำเมื่อเพิ่ม x อนุญาตให้ประมวลผล 100 ล้านอันเดิมใน 2.3 วินาทีโดยเจียมเนื้อเจียมตัวมากขึ้น Ryzen 2500U 8-thread CPU: https://pastebin.com/UuDpVPQg (คอมไพล์ด้วย `-fopenmp` สำหรับมัลติเธรด) การย้ายสิ่งนี้กลับไปที่ OpenCL ควรทำให้เร็วพอสำหรับการใช้งานจริง

โพสต์คำตอบ

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