Разделить 100% на 4 случайных числа

Печать RSS
1188


Землянин
0
do {
$s = array(rand(0,100),rand (0,100),
rand(0,100), rand(0,100));
$sum = array_sum($s); } while
($sum != 100); print_r($s);
Изменил: Дмитрий (18.05.2012 / 22:29)

Голубые штаны
0
Велик от меня:
<?
function random_num($num) {
	$arr = array();
	for ($x = 0; $x < 4; $x++) {
		if ($x < 3) {
			$arr[] = rand(1, $num-array_sum($arr));
		} else {
			$arr[] = $num-array_sum($arr);
		}
	}
	return $arr;
}

$s = random_num(1000);
echo array_sum($s) . '<br />';
var_dump($s);
/*
1000
array[4]
   0 => "328"
   1 => "162"
   2 => "499"
   3 => "11"
*/
П

Пацак
0
И от меня: $arr=array_rand(range(0, 33), 3); $arr[]=100-array_sum($arr);

Чатланин
0
мой велосипед:

<?php

$rand = array();
for ($i = 0; $i < 4; $i++) {$rand[] = mt_rand(0, 5);}

echo 'A:'.round(100 / array_sum($rand) * $rand[0]).'%<br />';
echo 'B:'.round(100 / array_sum($rand) * $rand[1]).'%<br />';
echo 'C:'.round(100 / array_sum($rand) * $rand[2]).'%<br />';
echo 'D:'.round(100 / array_sum($rand) * $rand[3]).'%<br />';
Изменил: Виталий (19.05.2012 / 09:33)
K
Автор
Транклюкаторщик
0
нулевые и отрицательные значения не нужны, соотетственно 15 пост не катит

Чатланин
0
16. eGo Works 2 Yourself, каким образом тут могут быть отрицательные значения? O_o от нулевых можешь спастись, если генерить от 1 и более) я не понимаю тебя тогда

Добавлено через 00:27 сек.
for ($i = 0; $i < 4; $i++) {$rand[] = mt_rand(1, 5);}

Добавлено через 00:49 сек.
делов то
K
Автор
Транклюкаторщик
0
мне нужно разделить число 100 на 4 ненулевых и не отрицательных числа, в сумме дающих 100.

Чатланин
0
deleted
Изменил: Виталий (19.05.2012 / 13:39)

Чатланин
0
A:13%
B:21%
C:41%
D:25%
Всего:100

бывает результат что при округлении может в общем выйти 99 или 101, а так отрицательных и нулевых быть не может, если чуток поменять код преведенный в 15 посте - генерить, к примеру, от 10 до 1000, то нулевых значений в результате быть просто не может smile

Голубые штаны
0
18. eGo Works 2 Yourself, чем тебя мой вариает не устраивает? Самый кошерный из представленных выше smile
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск