programingsВто, 07.08.12, 18:48 |
Здравейте! <?php
// Задаваме примерни 6 числа от последният тираж!
$numbers[1] = "14";
$numbers[2] = "17";
$numbers[3] = "20";
$numbers[4] = "34";
$numbers[5] = "35";
$numbers[6] = "46";
foreach($numbers as $y) {
// С функцията rand теглим едно число от 1 до 49 !
$x = rand(1, 49);
// Ако съвпада числото от масива с това от произволно изтеглените,
// то придаваме съответната стойност на променливата match !
if($x==$y) {
$match = "<font color='green'>Да!</font>";
} else {
$match = "<font color='red'>Не!</font>";
}
// Извеждаме информацията!
echo "
Число от тиража: <b>$y</b>
<br />
Генерирано число: <b>$x</b>
<br />
Съвпадение: <b>$match</b>
<hr />";
}
?> |
Всичко изглежда наред, но има само един проблем! Понякога се случва да бъде генерирано едно и също число от функцията rand ( пример ), и така се обезсмисля смисъла на скрипта! Въпросът ми е как най-елегантно и изчистено да проверя в цикъла дали има съвпадение между генерираните числа от функцията, и ако има такова, то да направя ново генериране, вместо да продължавам така? Благодаря! |
dreamskillВто, 07.08.12, 20:25 |
Правиш масив с генерираните числа. И при всеки foreach проверяваш дали генерираното число се е генерирало преди. |
dreamskillВто, 07.08.12, 22:44 |
Глупости. <?php
$numbers[0] = 14;
$numbers[1] = 17;
$numbers[2] = 20;
$numbers[3] = 34;
$numbers[4] = 35;
$numbers[5] = 46;
$tn = range(1, 49); //създава масив tn с ключ и стойност от 1 до 49 включително. tn е за temporary numbers =D
shuffle($tn); //стойностите и ключовете са разбъркани. Първия ключ на масива вече може да има всяко число като стойност.
for ($i=0; $i<6; $i++) //цикъл!
{
$n[$i]=$tn[$i]; //присвоява... блабла
echo "Число от тиража: <b>".$numbers[$i]."</b>
<br />
Генерирано число: <b>".$n[$i]."</b>
<br />
Съвпадение: <b>";
if ($numbers[$i]==$n[$i])
echo "<font color='green'>Да!</font>";
else
echo "<font color='red'>Не!</font>";
echo "</b><hr />";
}
?> |
По-кратко от това не знам дали има. По принцип мразя да пиша коментари. |
insecteaterЧет, 09.08.12, 13:46 |
Според алгоритъма който си представил, поредността на числото също е от значение. Например ако в началния масив имам 14 на първа позиция, но случайно изтегля 14 от третия опит, тогава нямам да имам съвпадение, Това ли е наистина целта? <?php
$numbers = array(14, 17, 20, 34, 35, 46);
//Генерираме 6 произволни числа в диапазона от 1 до 49
$othernumbers = range(1, 49);
shuffle($othernumbers);
$othernumbers = array_slice($othernumbers, 0, 6);
foreach($numbers as $key=>$value) {
$match = ($value == $othernumbers[$key])?'<font color="green">Да!</font>':'<font color="red">Не!</font>';
// Извеждаме информацията!
echo "
Число от тиража: <b>$value</b>
<br />
Генерирано число: <b>$othernumbers[$key]</b>
<br />
Съвпадение: <b>$match</b>
<hr />";
}
?> |
|
programingsЧет, 09.08.12, 21:17 |
Да! Съпоставя се число с число, това е идеята! |