
07-03-2008, 14:18
|
|
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
|
|
חבר מתאריך: 25.10.01
הודעות: 42,778
|
|
אה, שונים זה מזה...
יש כל מיני דרכים לעשות את זה, והשאלה היא אם רוצים להיכנס לחישובי יעילות מטורפים או לא (במילים אחרות - תלוי כמה פעמים אתה הולך לבצע את הקוד...).
השיטה הטריוויאלית היא פשוטה - על העיקרון שלך רק קצת פחות מסובך לדעתי:
קוד PHP:
<?php
srand(time());
$numbers = 0;
$arr = array();
while ($numbers < 10)
{
$number = rand(1,100);
if (!in_array($number,$arr))
{
$arr[]=$number;
$numbers++;
}
}
?>
שיטה אחרת היא ליצור מערך עם סדר מספרים עולה בכל תא שלו, ובהתאם למספר שהוגרל, למשוך החוצה את התא הזה מהמערך...(ואז בעצם שאר המערך זז) ולהוריד את מספר האפשרויות באחד. זה קצת מסובך יותר מבחינת קוד, אבל כנראה יותר יעיל. בשביל כמות הריצות הקטנה שאתה מציין, אני מאמין שהקוד שכתבתי לעיל הוא "good enough"...
אגב, אם אתה רוצה לא לעשות כלום בעצמך ופשוט לסמוך על PHP...
קוד PHP:
<?php
$arr = range(1,100);
shuffle($arr);
for ($i=0; $i<10; $i++)
echo $arr[$i]."\n";
?>
|