Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: mt_rand() генерация чисел
Форумы портала PHP.SU » PHP » Программирование на PHP » mt_rand() генерация чисел

Страниц (1): [1]
 

1. ybiza - 05 Января, 2011 - 02:30:20 - перейти к сообщению
mt_rand() использую для генерации чисел, но вот задача, есть таблица MySql 3 записи
мне необходимо генерировать 3 числа чтобы не одно из них не повторялось в любом порядке. Делаю так -
PHP:
скопировать код в буфер обмена
  1.  
  2. $num = mysql_num_rows(mysql_query("SELECT `id` FROM `table`"));
  3. $rnd1 = mt_rand(1,$num);
  4. $rnd2 = mt_rand(1,$num);
  5. $rnd3 = mt_rand(1,$num);
  6.  

Напишите как сделать это чудо! Что можно использовать и как?
2. Реф - 05 Января, 2011 - 02:41:07 - перейти к сообщению
Пусть $num == 5, тогда
PHP:
скопировать код в буфер обмена
  1. $rnd1 = mt_rand(1,$num); // Случайное число в диапазоне 1 - 5
  2. $rnd2 = mt_rand(1,$num); // Случайное число в диапазоне 1 - 5
  3. $rnd3 = mt_rand(1,$num); // Случайное число в диапазоне 1 - 5


Все три числа хоть и случайны, но они из одного диапазона, а значит могут совпасть.

Вариант решения: получать сулчайные числа из диапазонов (1;$num/3), ($num/3+1; 2*$num/3) и (2*$num/3 +1, $num)
3. OrmaJever - 05 Января, 2011 - 02:47:17 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $num = 5;
  2. $rnd1 = mt_rand(0,$num);
  3. while(1==1)
  4. {
  5.         $rnd2 = mt_rand(0,$num);
  6.         if($rnd2 != $rnd1) break;
  7. }
  8.  
  9. while(1==1)
  10. {
  11.         $rnd3 = mt_rand(0,$num);
  12.         if($rnd3 != $rnd1 && $rnd3 != $rnd2) break;
  13. }
  14. echo $rnd1, '<br>', $rnd2, '<br>', $rnd3;
4. ybiza - 05 Января, 2011 - 07:54:27 - перейти к сообщению
OrmaJever! Спасибо большое то что нужно! Работает как часы!
5. Ch_chov - 05 Января, 2011 - 16:50:48 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $num = 10;
  2. $rnd = range(1, $num);
  3. shuffle($rnd);
  4. $rnd1 = $rnd[0];
  5. $rnd2 = $rnd[1];
  6. $rnd3 = $rnd[2];
6. JustUserR - 06 Января, 2011 - 01:36:11 - перейти к сообщению
ybiza В качестве возможного допустимого простого решения позволяющего осуществлять получение списка индексов элементов из заданного диапазона с условием сохранения равномерного распределения случайное величины и обеспечения отсутствия повторения полученных значений - допустимо осуществление создание специального индексного массива включающего последовательные включения выбираемых идентификаторов - и обеспечить его дальнейшую случайную перестановку средствам функции shuffle - после чего обращение к последовательным внешним индексам полученного значения предоставляют получение случайных чисел отвечающих оригинальным требованиям
7. ytrewq123 - 09 Ноября, 2014 - 11:09:40 - перейти к сообщению
Здравствуйте!
Вот вопрос. В данном примере результат при нажатии кнопки генерируется функцией mt_rand. И он разный. А я бы хотел по порядку. Нажал 1 нажал ещё раз 2 Нажал ещё 3
1->2->3->1->2->3->
Что использовать в место mt_rand. Подскажите пожалуйста.

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. function fuf (){
  4. $z=('"<div style="width:111px; height:111px; background-color:red; "></div>"');
  5. $e=('"<div style="width:111px; height:111px; background-color:blue; "></div>"');
  6. $o= array ("$z",
  7.           " $e"
  8.            );
  9. for ($i=0; $i<1; $i++)
  10. $a=count($o);
  11. $dex = mt_rand(0, $a-1);
  12.  
  13. $znach= $o[$dex];
  14.  
  15. if(isset($_POST['poga'])){
  16.    
  17. echo "$znach";
  18.              
  19.   }}
  20. ?>
  21.  
  22.  
8. Viper - 09 Ноября, 2014 - 14:05:42 - перейти к сообщению
ytrewq123

PHP:
скопировать код в буфер обмена
  1. for ($i=1, $n=10; $i<$n; $i++) {
  2.         echo $i;
  3. }


в вашем случае $dex = $i из примера.
9. ytrewq123 - 09 Ноября, 2014 - 17:18:49 - перейти к сообщению
Спасибо Вам.

 

Powered by ExBB FM 1.0 RC1