Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как исключить числа из рэндома?
 
 автор: amigo62   (17.11.2007 в 19:36)   письмо автору
 
 

Можно ли как нибудь указать число, которое НЕ должна возвращать функция rand(); ? Например: нужно вернуть любое число от 0 до 15, исключив 5 и 11... Есть ли что-то быстрее и проще чем while с проверкаой результата ?

   
 
 автор: ddhvvn   (17.11.2007 в 19:41)   письмо автору
 
   для: amigo62   (17.11.2007 в 19:36)
 

Навернео, придется все-таки через цикл :))
rand позволяет задать только верхнюю и нижнюю границы диапазона...

   
 
 автор: amigo62   (17.11.2007 в 20:00)   письмо автору
 
   для: ddhvvn   (17.11.2007 в 19:41)
 

А если сформулировать так: требуется получить три случайных неповторяющихся индекса (для выборки из массива)?

   
 
 автор: SHAman   (17.11.2007 в 20:12)   письмо автору
 
   для: amigo62   (17.11.2007 в 20:00)
 


$x1 = rand(1, 100);
$x2 = $x1+rand(1,100);
$x3 = $x2+rand(1,100);

Ну или типа того. Если использовать уже полученное значение для формирования нового, то повторения будут только если был 0.

   
 
 автор: mihdan   (17.11.2007 в 20:13)   письмо автору
 
   для: amigo62   (17.11.2007 в 20:00)
 

array - функции смотрите.

   
 
 автор: amigo62   (18.11.2007 в 11:01)   письмо автору
 
   для: mihdan   (17.11.2007 в 20:13)
 

Наверно все же через цикл придется=(

   
 
 автор: DEM   (18.11.2007 в 11:16)   письмо автору
 
   для: amigo62   (17.11.2007 в 19:36)
 

А если попробовать

<?
//$num - трока вида "2|43|6", то есть числа разделаются знаком |
function pr($num)
{
$exp explode("|"$num);
$r rand(0,100);
for(
$i=0;$i<count($exp);$i++)
{
  if(
$r==$exp($i))
  {
    
pr($num);
  }
}
}

//вызываем
pr("1|6|45|3");
?>



Что-то вроде этого

   
 
 автор: amigo62   (20.11.2007 в 21:50)   письмо автору
 
   для: DEM   (18.11.2007 в 11:16)
 

DEM, тоже вариант:) а я так сделал:
<?php
$bin
=rand(0,100);
while(
in_array($bin,$bindex))
{
$bin=rand(0,100);
}
$bindex[$i]=$bin;
?>

   
 
 автор: Unkind   (20.11.2007 в 22:53)   письмо автору
 
   для: amigo62   (20.11.2007 в 21:50)
 

На мой взгляд, цикл do ... while() смотрелся бы чуть лучше.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования