Помогите , плиз.... начал писать генератор случайных неповторяющихся чисел , запись в файл.... хз почему не работает.... выдаёт дубликаты.... PHP: <?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { $chislo=mt_rand(1,30); $file = fopen($_SERVER["DOCUMENT_ROOT"]."/chisla.php","a+"); $str= fread($file) ; if (!strpos($str,'..'.$chislo.'..') ) { $yes=$chislo; } else { while(strpos($str,'..'.$chislo.'..')) { $chislo=mt_rand(1,30);} $yes=$chislo;} if (!strpos($str,'..'.$yes.'..') ) { fwrite($file, '..'.$yes.'..'); fclose($file); } echo $yes; } ?> <form method="POST" action="<?=$_SERVER['PHP_SELF']?>"> <input type="submit" value="Узнать!"> </form> :x
PHP: <?php $steps = mt_rand(1, 30); $results = array(); while(--$steps) { $results[] = $steps; } shuffle($results); echo join("\r\n", $results); ?>
1)В переменную $str что-нибудь приходит? 2)Проверка (!strpos(...)) некорректна: http://ru2.php.net/manual/en/function.strpos.php 3)Может удобнее будет воспользоваться функциями file_get_contents и file_put_contents?
$n = 30; $data = range(1, 999); $rand = array_rand($data,$n); for($i=0; $i<$n; $i++) { echo $rand[$i]."<br>"; }
PHP: <?php function getUnqRand() { static $gens = array(); $min = 1; $max = 1000; if (count($gens) < $max-$min) { while (1) { $new = rand(1, 10000); if (!in_array($new, $gens)) { $gens[] = $new; return $new; } } } return false; }