Генериране на 4 цифрено число с различни цифри

  • Автор Автор sorRy
  • Начална дата Начална дата

sorRy

Registered
Някой може ли да каже как ще стане да генерирам 4 цифрено число на което цифрите не се повтарят и да може да започва с 0 но да няма 1323 (примерно) всяка цифра да я има само веднъж. Аз направих нещо но средно на 15 път се дъни и числото е три цифрено.
 
Смисъл някъде да съм споменал нещо за капча. Там не ти е нужно подобно нещо и много ясно съм си написал какво искам да направя.
 
Ами аз имам една идея как да стане това.
Слагаш числата в един масив. След това избираш първото число и го махаш от масива, после второто и така колкото ти е нужно.
www.bg.php.net/unset ще ти помогне :?:
 
Кода не е мой, но върши работа.

Код:
<?php
function nonRepeat($min,$max,$count) {

    //prevent function from hanging
    //due to a request of more values than are possible    
    if($max - $min < $count) {
        return false;
    }
    
   $nonrepeatarray = array();
   for($i = 0; $i < $count; $i++) {
      $rand = rand($min,$max);
      
      //ensure value isn't already in the array
      //if it is, recalculate the rand until we
      //find one that's not in the array
      while(in_array($rand,$nonrepeatarray)) {
        $rand = rand($min,$max);
      }
      
      //add it to the array
      $nonrepeatarray[$i] = $rand;
   }
   return $nonrepeatarray;
}


//give it a test run
$test = nonRepeat(0,20,20);
echo "<pre>";
print_r($test);
echo "</pre>";
?>
 
@SveXteZ нещо не мога да те разбера. Но разрешавам на някой да ме перне зад врата, защо винаги търся някакво сложно решение???
Код:
$k = array(0,1,2,3,4,5,6,7,8,9);
$r = array_rand($k, 4);
$chislo = $k[$r[0]].$k[$r[1]].$k[$r[2]].$k[$r[3]];
echo $chislo;
ето го 1000% опростено
просто не ви е истина колко дълго го бях написал първоначално
 
Може да е малко лемаво, но на пръв поглед аз бих го направил тъй :

Код:
$used = array();
$num = "";

while(strlen($num) < 4) {
	$current = rand(0, 9);
	if(!in_array($current, $used)) {
		$num .= $current;
		$used[] = $current;
	}
}
print $num;

EDIT:
Всъщност последното на Sorry е доста добро :)
 
Да мерси на всичко но аз си се оправих решението е в горния пост. А на кой да дам сега точка вие си се разберете и кажете.
 

Back
Горе