Генерация случайного числа, но с поворотом - PullRequest
3 голосов
/ 02 июля 2010

Мне нужно сгенерировать случайное число.

Но суть в том, что% младших чисел должен быть больше, чем старшее.

Например.

rand> 1 до 100

13 , 15 , 12 , 16 , 87, 15 , 27 , 12 , 1 , 12 , 98, 12 , 53, 12, 14 ....

Жирными целыми числами будут те, которые возвращаются из диапазона 1-100.

Математика должна быть такой rand = a number lower than max/2

Надеюсь, что вы, ребята, можете помочь.

Ps, Как матрица может войти в это?Я не превосходил математику: (


Кажется, что ответом для прессы является тот.

$up = $down = 0;
while(true)
{
   if(abs((rand()%150)-50) < 50)
   {
      $up++;
   }else
   {
      $down++;
   }
   if( ($up + $down) == 500){ break;}
}

echo $up . '/' . $down;

Ответы [ 3 ]

5 голосов
/ 02 июля 2010

как насчет

n = abs((rand()%150)-50)
3 голосов
/ 02 июля 2010
$x = rand(0,1) ? rand(1,100) : rand(1,50);

Простой метод: первый ранд (0,1) выбирает между двумя случаями.1.50 или 1..100 в качестве случайного диапазона.Поскольку 1100 уже включает в себя 1,50, последний диапазон выбирается 100% времени, первый случай запускается только в 1 из 2.

Если вы хотите распределение, где самый высокий номер 99 выбирается почти никогда,но более низкие цифры 1..20 довольно часты, тогда подойдет простой rand(1,rand(1,100)).

0 голосов
/ 02 июля 2010
$rand = (rand() * rand()) / (getrandmax() * getrandmax());

Это даст вам случайное число от 0 до 1 с высокой вероятностью попадания в нижний предел диапазона и вероятностью экспоненциального уменьшения большего числа. Затем вы можете масштабировать этот результат до любого диапазона, который вам нужен.

...