#php
#php
Вопрос:
У меня есть проблема, когда мне нужны случайные значения в php. У меня все это работает. Но когда мне нужно, скажем, 10 случайных значений, мне нужно, чтобы 8 из них были по крайней мере определенным целым числом. Как я могу этого добиться? С уважением, Леон
<?php
$vertices = $_POST["vertices"];
echo "Vertices: $vertices <br>";
$edges = $_POST["edges"];
echo "Edges: $edges <br>";
$length = $_POST["length"];
echo "Length: $length <br><br>";
$temp1 = $edges;
for($x = 0; $x < $vertices; $x ){
for($i = 0; $i < $x; $i ){
echo "_ ";
}
for($y = $x; $y < $vertices; $y ){
$value = rand(0,1);
if($x == $y){
echo "0 ";
} else {
if($value == 1 amp;amp; $temp1 > 0){
echo "1 ";
$temp1--;
} else {
echo "0 ";
}
}
}
echo "<br>";
}
?>
<html>
</font>
</html>
Это приведет к выводу чего-то вроде этого:
Vertices: 5
Edges: 8
Length: 4
0 0 1 0 1
_ 0 0 1 0
_ _ 0 1 0
_ _ _ 0 1
_ _ _ _ 0
Однако мне нужно, чтобы в верхней половине матрицы было ровно 8 единиц 1. Я не знаю, как этого добиться, потому что теперь он будет делать случайное число меньше 8.
Комментарии:
1. покажите свой код.
2. При генерации случайного числа есть опция для «min» и «max»: php.net/manual/en/function.rand.php
3. хорошо — вы генерируете свои десять целых чисел, проверьте, являются ли восемь из них хотя бы определенным целым числом.. и если это не так, начните сначала.
4. Это не 10 случайных значений: это 2 случайных значения и 8 значений, выбранных случайным образом из определенной коллекции.
5. Сгенерируйте пару случайных чисел и просто назначьте 3 (случайное, потому что вы только что получили его от какого-то парня в Интернете) для остальных
for($i=0;$i<8;$i ) { $certainInteger[] = 3; }
: dilbert.com/strip/2001-10-25
Ответ №1:
Я бы выбрал другой подход:
- Есть
$vertices * ($vertices - 1) / 2
позиции, которые вам нужно заполнить (10). - Должны быть
$edges
времена1
и остальные0
(8 и 2). - Вы можете заполнить массив 8
1
‘s и 20
‘s. - Перетасуйте массив.
- Перебирайте свою матрицу и вставляйте элемент массива для каждой позиции, которую вам нужно заполнить.
Комментарии:
1. Но переменные (например, 10, 8) могут меняться. Как вы создаете массив, который будет работать с этим? И как мне перетасовать массив?
2. Я думаю, что это действительно может сработать, спасибо, чувак! Теперь у меня есть перетасованный массив
3. Я просто собирался сказать, что вы можете использовать
array_fill
для генерации 2 массивов с 0 и 1 и объединить их.shuffle()
результат и готово 🙂