Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Рандомные числа уникальные PHP (https://javascript.ru/forum/server/78004-randomnye-chisla-unikalnye-php.html)

Dark_Delphin 12.07.2019 14:04

Рандомные числа уникальные PHP
 
Всем привет.

Ребята, есть скрипт пхп который выдаёт массив 16 случайных уникальных чисел без повторов.

<?php
$limit = 16;
$max_num = 5000;
$used_nums = array();
while(1) {
  $random = rand(0, $max_num);
  if(!in_array($random, $used_nums)) {
     $used_nums[] = $random;
  }
  if(count($used_nums) == $limit) { break; }
}
var_dump($used_nums);


Подскажите, как привязать скрипт к кнопке, что-бы изначально нужно было нажать на кнопку и оно все это выводило, ну а далее все числа просто поместить в таблицу.



Заранее благодарен.

Dark_Delphin 12.07.2019 16:03

Фух. Получилось кое что сделать.

<form method="POST">
    <input type="submit" name="knopka" value="Создать 16 рандомных чисел в диапазоне от 1 до 5000" />
</form>




<?php
    # Если кнопка нажата
    if( isset( $_POST['knopka'] ) )
    {
        # Тут  код який виполянеться
		
$used = array();
while (count($used)<16){
    $rand = mt_rand(1,5000);
    if (!in_array($rand,$used)) {
        $used[] = $rand;    
        
    }
	
	 echo $rand."<br />";  
}



       
    }
?>


Теперь просто поместить все это окуратненько в таблицу числа, как это реализовать?

Dark_Delphin 12.07.2019 16:18

Например 3/4 столбца или т.п.

laimas 12.07.2019 16:52

Цитата:

Сообщение от Dark_Delphin
Получилось кое что сделать.

Уверены?

Dark_Delphin 12.07.2019 17:10

Цитата:

Сообщение от laimas (Сообщение 510180)
Уверены?

ну вот щас при нажатии рандомлятся 16 чисел в диапазоне от 1 до 5000.

Осталось эти 16 чисел поместить в ячейки таблицы, только я не могу понять, как это сделать...

laimas 12.07.2019 17:33

Цитата:

Сообщение от Dark_Delphin
ну вот щас при нажатии рандомлятся 16 чисел в диапазоне от 1 до 5000.

А если условие !in_array($rand,$used) не будет выполнено, то сколько чисел будет? Или не важно количество?

Dark_Delphin 12.07.2019 17:44

А почему оно не будет выполнено?

laimas 12.07.2019 17:52

Цитата:

Сообщение от Dark_Delphin
А почему оно не будет выполнено?

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

Dark_Delphin 12.07.2019 19:18

Цитата:

Сообщение от laimas (Сообщение 510185)
Потому, что rand, это генератор псевдослучайного числа и не обязательно, что в цикле всегда повезет и в каждой его итерации будет выпадать уникальнее значение.

Может совпадения, ну уже сколько раз протестил вроде не было совпадения. Ну если будет то переделывать на до будет.

А в табличку можно числа засунуть?

laimas 12.07.2019 19:31

echo '<table><tr>' . implode('</tr><tr>', array_map(function($v) {
    return '<td>' . implode('</td><td>', $v) . '</td>';
}, array_chunk($used, 4))) . '</tr></table>';


Часовой пояс GMT +3, время: 23:50.