נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: מספר אקראי - פקודה יותר יעילה מrandomize?

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
עידן
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 11 February 2006 בשעה 18:41 | IP רשוּם
ציטוט עידן

שלום

אני בניתי תוכנה מסוימת בעלת מערך דו מימדי בשפת C#.
עכשיו בנקודה מסוימת בתוכנית, המחשב עושה את הפעולה הבאה:
rnd:;
randomize();
g = random(3);
randomize();
h = random(3);
h++;
g++;
if (board[g][h] != '-') goto rnd;

כפי שניתן לראות, הלוח שלי הוא 3 על 3, כאשר משבצת ריקה מסומנת ע"י מקף.
אם המשבצת לא ריקה, הוא חוזר ומגריל שוב מספרים...

תהליך זה יכול לקחת המון זמן כאשר הטבלה מתחילה להתמלאות, ורציתי לדעת אם יש פעולה טובה יותר.

תודה!
חזרה לתחילת העמוד הצג את כרטיס החבר של עידן חפש הודעות אחרות של עידן בקר בדף הבית של עידן
 
פיורפווניג
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 11 February 2006 בשעה 18:43 | IP רשוּם
ציטוט פיורפווניג

מצטרף!
חזרה לתחילת העמוד הצג את כרטיס החבר של פיורפווניג חפש הודעות אחרות של פיורפווניג בקר בדף הבית של פיורפווניג
 
Fate
פורומיסט על
פורומיסט על
סמל אישי

הצטרף / הצטרפה: 25 October 2005
משתמש: מנותק/ת
הודעות: 571
נשלח בתאריך: 11 February 2006 בשעה 19:21 | IP רשוּם
ציטוט Fate

אתה יכול לעבור על המערך, לספור את הכמות מקומות הריקים...
למשל אם הכל ריק זה 9, וכו'...
ואז להגריל מספר אחד בין 1 עד מספר המקומות הפנויים...
ואז נגיד מוגרל 3...
ואז אתה עובר על המערך ומוצא את המקום הריק השלישי שאתה נתקל בו ושם שם משהו...
זה יפתור לך את הבעיה
חזרה לתחילת העמוד הצג את כרטיס החבר של Fate חפש הודעות אחרות של Fate
 
Chris Masters
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 11 February 2006 בשעה 19:21 | IP רשוּם
ציטוט Chris Masters

שלום

הפתרון המהיר ביותר שידוע לי עליו על-מנת להפיק מספר אקראי הוא שימוש ב rand().
בהצלחה!
חזרה לתחילת העמוד הצג את כרטיס החבר של Chris Masters חפש הודעות אחרות של Chris Masters בקר בדף הבית של Chris Masters
 
עידן
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 11 February 2006 בשעה 19:23 | IP רשוּם
ציטוט עידן

Fate כתב:
אתה יכול לעבור על המערך, לספור את הכמות מקומות הריקים...
למשל אם הכל ריק זה 9, וכו'...
ואז להגריל מספר אחד בין 1 עד מספר המקומות הפנויים...
ואז נגיד מוגרל 3...
ואז אתה עובר על המערך ומוצא את המקום הריק השלישי שאתה נתקל בו ושם שם משהו...
זה יפתור לך את הבעיה


תודה על הרעיון, אבל זה לא פרקטי במיוחד כי אז זה לך לפי הסדר במערך מבחינת מקומות פנויים. וגם זה יכול לצאת ארוך יותר.

לקחתי בסוף משהו כזה:
#include <time.h>
...
time_t t;
...
rnd:;
srand((unsigned) time(&t));
g = rand() % 3;
h = rand() % 3;
g++;
h++;


וזה עובד ממש מהיר תודה בכל מקרה!
חזרה לתחילת העמוד הצג את כרטיס החבר של עידן חפש הודעות אחרות של עידן בקר בדף הבית של עידן
 
שמוליק הקיפוד
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 11 February 2006 בשעה 20:08 | IP רשוּם
ציטוט שמוליק הקיפוד

אה יפה רעיון טוב ביותר למרות שלדעתי יותר קל לשאול את המשתמש איפה הוא רוצה שהמחשב ישים את העיגול
חזרה לתחילת העמוד הצג את כרטיס החבר של שמוליק הקיפוד חפש הודעות אחרות של שמוליק הקיפוד בקר בדף הבית של שמוליק הקיפוד
 
Fate
פורומיסט על
פורומיסט על
סמל אישי

הצטרף / הצטרפה: 25 October 2005
משתמש: מנותק/ת
הודעות: 571
נשלח בתאריך: 11 February 2006 בשעה 21:18 | IP רשוּם
ציטוט Fate

א) עדיין לא הבנתי מה לא בסדר בפתרון שאני הצעתי... אז זה ילך מספר רנדומלי לפי הסדר, במה זה שונה?
ב) הקוד שאתה כתבתה הוא אותו דבר כמו שהיה לך קודם רק בלי הבדיקה שהמקום פנוי...
חזרה לתחילת העמוד הצג את כרטיס החבר של Fate חפש הודעות אחרות של Fate
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה