עבור לתוכן

בעיה עם Random ב- C#

Featured Replies

פורסם

יש לי בעיה קטנה עם ה- Random ב- C#.

בגלל שה- Random מבוסס על הזמן, אם אני עושה מספר גדול רנדומים רצופים זה מביא לי את אותו המספר.

לדוגמה, אם אני עושה 100 לוחות בינגו עם 25 מספרים כל אחד זה נותן 100 לוחות בינגו אותו הדבר.

מה אני עושה כדי להתגבר על הבעיה הזאת?

פורסם

צור רק אובייקט אחד מטיפוס Random, ואל תאתחל אותו בכל פעם מחדש. לדוגמה, במקום זה:

for (int i = 0 ; i < 100 ; ++i)
{
Random rnd = new Random();
int x = rnd.Next();
// do something with x
}

תעשה ככה:

Random rnd = new Random();
for (int i = 0 ; i < 100 ; ++i)
{
int x = rnd.Next();
// do something with x
}

פורסם

כותב קוד שעובד נכון. תאתחל אובייקט אחד של Random בתוכנית ותשתמש בפונקציה Next בשביל להמציא מספרים חדשים. (הקדימו אותי).

פורסם

אם הקוד עדיין נותן לך את אותם מספרים פשוט תוסיף sleep של מילי-שניה אחת לקוד אחרי כל מספר רנדומלי

פורסם

אם הקוד עדיין נותן לך את אותם מספרים פשוט תוסיף sleep של מילי-שניה אחת לקוד אחרי כל מספר רנדומלי

מה הקשר ? לעקוף טעות בתיכנות ע"י תלאי זה לא חכם.

פורסם

exercise, רשמתי לו אם הקוד עדיין לא עובד, משמע אחרי שהוא עושה את מה שהצעתם לו...

פורסם

איזה סיבה יש ל Random לא לעשות את מה שהוא צריך ? ברגע שה seed נקבע באתחול האובייקט לא רק ש sleep לא ישנה כי הוא כבר קבוע, הפונקציה Next תדאג לא להחזיר מספרים דומים בהסתברות גבוהה.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים