הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   עזרה [php] - תפריט אקראי (https://hosts.co.il/forums/showthread.php?t=18786)

amirs_5 31-03-06 20:02

עזרה [php] - תפריט אקראי
 
אתם זוכרים תאשכול הקודם שלי , אז חשבתי שהצלחתי אבל לא , אז ניסיתי אני ליצור מחדש קוד ולא הצליח לי ...
אממ .. אז ככה למי שלא יודע את הבעיה אני יפרט :
אני רוצה שכל פעם הפלט יהיה 5 מספרים רנדומליים.
לא יהיה אותו מספר פעמיים.
וכל המספרים המוגדרים חייבים להראות .
לדוגמא :
12534
25413
23154
וכו..

טוב אז הקוד שרשמתי זה...
PHP קוד:

$cheak = array( '1'   => "0",
          
'2'  => "0",
          
'3'  => "0",
          
'4'  => "0",
          
'5' => "0"
                       
);

$p 1;
 for(
$i=1;$i<=5;$i++) { 
    
$r rand (1,5);
    
$cheak['$r'] = $cheak['$r']++; 
 if(
$cheak['$r'] != $p) { 
    
$cheak['$r'] = $cheak['$r']--;
    
$r rand (1,5);
    
$cheak['$r'] = $cheak['$r']++; 
}
  echo 
$r."<br />";
 } 

עכשיו אני יסביר את המטרה שלו .
הוא רץ 5 פעמים .(בשביל שיהיה את ה5 מספרים.)
אח"כ הגרלת מס' רנדומלי .
לדוגמא יצא 3 , אז במערך cheak['3']; יהיה 1.
ואז הוא ידפיס על המסף את המספר הזה .
אח"כ בסיבוב השני של הלולאה אם ברנד יצא עוד פעם 3 , אז הcheak['3']; יהיה 2.
ואז בתנאי הוא יבדוק שבמקום ש cheak['3']; לא שווה ל1.
אז הוא יוריד את ה 2 ל 1 .
ואז הוא יגריל מס' רנדומלי אחר , שכאשר יצא נגיד 4 הוא יעשה לו ++ . וידפיס אותו וככה הקוד שרציתי יעבוד .
עכשיו יש לי מזה בעיה עם זה תמיד יוצאים לי פלטים כגון:
2
2
4
5
5

למה ?!

mlnn 31-03-06 20:10

אתה רוצה שהמספרים יכילו רק את 12345?
או שאפשר גם מספרים אחרים?

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

קוד:

for($x=1;$x<=5;$x++) {
for($i=1;$i<=5;$i++) {
echo rand (1,5);
}
echo "<br>";
}


LosNir 31-03-06 20:44

תנסה ככה:

PHP קוד:

<?
$min 
1;
$max 5;
$rand[1] = rand ($min,$max);
$rand[2] = rand ($min,$max);
$rand[3] = rand ($min,$max);
$rand[4] = rand ($min,$max);
$rand[5] = rand ($min,$max);
while(
$rand[1] == $rand[2] OR $rand[1] == $rand[3] OR $rand[1] == $rand[4] OR $rand[1] == $rand[5])
{
$rand[1] = rand ($min,$max);
}
while(
$rand[2] == $rand[1] OR $rand[2] == $rand[3] OR $rand[2] == $rand[4] OR $rand[2] == $rand[5])
{
$rand[2] = rand ($min,$max);
}
while(
$rand[3] == $rand[2] OR $rand[3] == $rand[1] OR $rand[3] == $rand[4] OR $rand[3] == $rand[5])
{
$rand[3] = rand ($min,$max);
}
while(
$rand[4] == $rand[2] OR $rand[4] == $rand[3] OR $rand[4] == $rand[1] OR $rand[4] == $rand[5])
{
$rand[4] = rand ($min,$max);
}
while(
$rand[5] == $rand[2] OR $rand[5] == $rand[3] OR $rand[5] == $rand[4] OR $rand[5] == $rand[1])
{
$rand[5] = rand ($min,$max);
}
$final "$rand[1]$rand[2]$rand[3]$rand[4]$rand[5]";
echo 
"$final";
?>

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

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

דוגמה: http://lol.israel-serv.net/rand.php
שים לב שהוא בחיים לא יחזיר את אותה התוצאה פעמים.

עריכה: הקוד עודכן

amirs_5 31-03-06 21:16

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

LosNir 31-03-06 21:20

ציטוט:

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

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

עריכה:

למה אתה מתכוון שלא יהיה תמיד חמש?
חמש משתנים? או עד חמש מספרים בכל משתנה?

amirs_5 31-03-06 21:28

ציטוט:

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

עריכה:

למה אתה מתכוון שלא יהיה תמיד חמש?
חמש משתנים? או עד חמש מספרים בכל משתנה?

לא הבנת אחי , אתה עשית קוד מצויין , אבל הוא ל5 .
ואני כל פעם יצטרך להוסיף משהו לתפריט וזה יככול להגיע גם ל 10 ול 12.
כאילו שלא כל פעם אני יעשה
PHP קוד:

$rand[1] = rand ($min,$max);
.........
.........
.........
.........
.........
.........
.........
.........
$rand[12] = rand ($min,$max); 

מבין ?

LosNir 31-03-06 21:31

ציטוט:

נכתב במקור על ידי amirs_5
לא הבנת אחי , אתה עשית קוד מצויין , אבל הוא ל5 .
ואני כל פעם יצטרך להוסיף משהו לתפריט וזה יככול להגיע גם ל 10 ול 12.
כאילו שלא כל פעם אני יעשה
PHP קוד:

$rand[1] = rand ($min,$max);
.................
$rand[12] = rand ($min,$max); 

מבין ?

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

במקום להדפיס: 123456
הוא יכול להדפיס: 1234563
מבין?
ככה שהמספר הנוסף שהוא יכניס יהיה 3, והערך שלו יהיה רק מ 1 עד 5,
אני מקווה שהבנת ושזה בסדר בשבילך, אני מתחיל עכשיו בעריכת הקוד.


עריכה:

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

amirs_5 31-03-06 21:35

ציטוט:

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

במקום להדפיס: 123456
הוא יכול להדפיס: 1234563
מבין?
ככה שהמספר הנוסף שהוא יכניס יהיה 3, והערך שלו יהיה רק מ 1 עד 5,
אני מקווה שהבנת ושזה בסדר בשבילך, אני מתחיל עכשיו בעריכת הקוד.

לאא, אסור שיהיה 3 פעמים.
תחשוב ש3 זה בתפפריט משחקים .
אז פתאום יהיה :
תוכנות
משחקים
סרטים
משחקים
גראפיקה..
כאילו זה יופיע לי פעמיים XD וזה בעיה .. =]]

LosNir 31-03-06 21:40

ציטוט:

נכתב במקור על ידי amirs_5
לאא, אסור שיהיה 3 פעמים.
תחשוב ש3 זה בתפפריט משחקים .
אז פתאום יהיה :
תוכנות
משחקים
סרטים
משחקים
גראפיקה..
כאילו זה יופיע לי פעמיים XD וזה בעיה .. =]]

מצטער זו היתה פשוט דוגמה לא טובה..
נגיד במקום 3 בסוף יהיה 8

amirs_5 31-03-06 21:42

ציטוט:

נכתב במקור על ידי LosNir
מצטער זו היתה פשוט דוגמה לא טובה..
נגיד במקום 3 בסוף יהיה 8

למה 8 ולא 7 ?!


כל הזמנים הם GMT +2. הזמן כעת הוא 17:40.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ