สุ่มวางศัตรูบนตาราง 2d


11

ฉันต้องการวางไอเท็มและศัตรูแบบสุ่ม (หรือสุ่มให้มากที่สุด) ในขณะนี้ฉันใช้Randomคลาสของ XNA เพื่อสร้างตัวเลขระหว่าง 800 สำหรับ X และ 600 สำหรับ Y มันรู้สึกเหมือนศัตรูวางไข่ไปทางด้านบนของแผนที่มากกว่าตรงกลางหรือด้านล่าง ฉันไม่ได้สร้างเครื่องกำเนิดไฟฟ้าซึ่งอาจเป็นสิ่งที่ต้องพิจารณา

มีเทคนิคอื่น ๆ ที่อธิบายซึ่งสามารถปรับปรุงการจัดวางศัตรูแบบสุ่มในตาราง 2d หรือไม่?


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

ฉันต้องการทราบว่ามีเทคนิคใด ๆ นอกเหนือจากการใช้คลาสสุ่มของ XNA เพื่อสร้างตัวเลขระหว่างนาทีและสูงสุด ฉันจะพยายามทำให้คำถามที่ชัดเจนมากขึ้น
Robb

1
คลาส Random ที่คุณพูดถึงเป็นส่วนหนึ่งของ. NET Framework ไม่ใช่ XNA เพียงแค่ fyi
Michael Coleman

@Omnion - ฉันรู้ ฉันรู้สึกเหนื่อยเล็กน้อยเมื่อสร้างคำถาม;)
Robb

คำตอบ:


16

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


7

Shawn Hargreaves เพื่อช่วยเหลือ!

http://blogs.msdn.com/b/shawnhar/archive/2009/12/17/the-psychology-of-randomness.aspx http://blogs.msdn.com/b/shawnhar/archive/2010/09 /10/links-5-charles-bloom-on-randomness.aspx

เมื่อคุณคิดว่าการแจกแจงแบบสุ่มคุณหมายถึงการแจกแจงแบบสม่ำเสมอ .Net's Random เป็นการสุ่ม คุณต้องการอย่างอื่นที่จะได้ออก วิธีการสุ่มตัวอย่างดิสก์ Poisson amitp เชื่อมโยงกับดูสมบูรณ์แบบสำหรับความต้องการของคุณ


+1 เอาคำพูดออกมาจากปากของฉันอย่างสม่ำเสมอแม้การกระจายนั้นดูเหมือนจะผสมกับการกระจายแบบสุ่มตลอดเวลา (ตัวฉันเองทำผิดพลาดเหมือนกัน)
Spooks

0

รหัส C # ต่อไปนี้จะสร้างชุดของคะแนนเครื่องแบบสำหรับคุณ:

Random rand = new Random(); // creates a new random number generator with a time-based seed
int X, Y;
for(int i = 0; i < numberOfPoints; i++)
{
  X = rand.Next(800); // generates a random int between 0 and 799, inclusive
  Y = rand.Next(600); // generates a random int between 0 and 599, inclusive
  AddPointToSet(X,Y); // write this method however you want
}

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.