С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/75: Рейтинг темы: голосов - 75, средняя оценка - 4.81
-4 / 0 / 0
Регистрация: 08.10.2013
Сообщений: 90
1

rand без повторений

12.12.2013, 21:49. Показов 14050. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
PHP
1
2
3
4
5
6
7
8
9
function my_random ($min, $max) {
    $randomize = rand($min,$max);
    if(preg_match("/;$randomize;/",$randmass)){
    my_random($min, $max);
    }else{
    $randmass .= ';'.$randomize.';';
    return $randomize;
    }
}
Почему значения повторяются?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2013, 21:49
Ответы с готовыми решениями:

Вывести без повторений
Здравствуйте. Помогите пожалуйста, никак не могу сообразить как составить запрос чтобы вывести...

Рандом без повторений
<? $max = 11; include "games_array.php"; $RANDOM1 = rand(1,$max); ...

Сочетания из n по k без повторений
Здраствуйте. Ситуация у меня такая: Есть неизвестное число элементов в массиве. Их точно больше 1 ...

Вывод из базы без повторений
есть БД MESSAGES, в ней имя автора, имя получателя, id сообщения и текст сообщения! Нужно...

6
Автор FAQ
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
12.12.2013, 21:53 2
А откуда функция узнает о $randmass? Он используется в третьей строке, но ранее не объявляется и не откуда не берется.
Надо передавать его в функцию
0
-4 / 0 / 0
Регистрация: 08.10.2013
Сообщений: 90
12.12.2013, 22:12  [ТС] 3
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function my_random ($min, $max, $randmass) {
    $randomize = rand($min,$max);
    if(preg_match("/;$randomize;/",$randmass)){
    my_random($min, $max, $randmass);
    }else{
    $randmass .= ';'.$randomize.';';
    return array('rand' => $randomize, 'massive' => $randmass);
    }
}
for($i=1;$i<16;$i++){
$rand = my_random(1,25,$randmass);
$randy = $rand['rand'];
$randmass = $rand['massive'];
$post .= '&qs_'.$i.'='.$randy.'';
print_r($rand);
}
тут в каком то месте $randmass обнуляется почему-то

Добавлено через 2 минуты
и вообще чисел не 15 теперь. Я запутался

Добавлено через 1 минуту
помогите сгенерировать случайные не повторяющиеся числа
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
12.12.2013, 22:34 4
PHP
1
2
3
$numbers = range($min, $max);
shuffle($numbers);
return array_pop($numbers);
0
71 / 38 / 23
Регистрация: 05.12.2013
Сообщений: 118
12.12.2013, 22:55 5
KOPOJI, тут тонкий момент. Если я, конечно, правильно всё понял.. Хотя, может туплю просто вечером =\

Если я хочу 15 случайных чисел от 0 до 100, то не выходит каменный цветок =(
Поправь, если я не прав, могу ошибаться о_О

Вот кривоватенький вариантик:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$randCount = 15; //Количество элементов массива
$randMin = 0; //Минимальное рандомное число
$randMax = 100; //Максимальное рандомное число
$randArray = array(); //Инициализируем массив
 
/**
 * Цикл будем повторять до упора.
 * Важно! Если rage (интервал), между $randMin и $randMax
 * будет меньше $randCount, цикл будет бесконечным!
 * Это очень важное замечание, так что решение "не для всех"
 * Однако, снабжено комментариями ;)
 */
while (true) { //Погнали
    $rand = rand($randMin, $randMax); //Формируем рандомное число
    if (!in_array($rand, $randArray)) { //Если такого числа в массиве нет
        $randArray[] = $rand; //Добавляем его
        if (sizeof($randArray) + 1 == $randCount) { //Если массив заполнен до упора
            break; //Выходим из цикла
        }
    }
}
 
print_r($randArray); //Выводим массив
?>
1
kester
12.12.2013, 23:49
  #6

Не по теме:

Регулярки для сравнения чисел? =-O :stop: :rtfm:

0
Автор FAQ
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
13.12.2013, 20:36 7
Продолжая идею KOPOJI

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
* Генерирует $count случайных, уникальных чисел в диапазоне [$min, $max]
* @param int $min Минимальное число
* @param int $max Максимальное число
* @param int $count Необходимое кол-во случайных чисел
* return array Массив случайных чисел
*/
function rand_array($min, $max, $count)
{
    $numbers = range($min, $max);
    shuffle($numbers);
    return array_slice($numbers, 0, $count);
}
 
$arRand = rand_array(0, 1000, 15);
echo '<pre>'.print_r($arRand, 1).'</pre>';
/*
    Array
    (
        [0] => 76
        [1] => 577
        [2] => 475
        [3] => 740
        [4] => 569
        [5] => 183
        [6] => 919
        [7] => 741
        [8] => 605
        [9] => 79
        [10] => 135
        [11] => 464
        [12] => 74
        [13] => 317
        [14] => 431
    )
*/
Цитата Сообщение от kester Посмотреть сообщение
Регулярки для сравнения чисел?
Это ещё что...
3
13.12.2013, 20:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2013, 20:36
Помогаю со студенческими работами здесь

Вывод в случайном порядке без повторений
Подскажите пожалуйста, как вывести в случайном порядке без повторений? &lt;?php // Создаем цикл, в...

Вывод случайных слов без повторений
Здравствуйте, никак не получается вывести слова из бд, что бы они не повторялись при этом:...

Вывод слов из mysql без повторений
Здравствуйте, помогите пожалуйста вывести информацию из бд без повторов ...

Вывод содержимого файла без повторений
Здравствуйте! Прошу помощи, ибо запутался... Имею файл txt со структурой: Имя Номер телефона...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru