Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
HapKoT
5 / 5 / 5
Регистрация: 31.01.2014
Сообщений: 107
1

Вывод рандомного числа ихходя из вероятности вероятностью

07.05.2014, 20:20. Просмотров 619. Ответов 3
Метки нет (Все метки)

Здравствуйте. Мозг уже вообще не варит...
Вот весь код.

PHPHTML
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php $lotteryWin=0;
$lotteryStavk=0;
$dattta = date('d.m.Y');
$sql="SELECT * FROM everyday_comprekl WHERE date = '$dattta'";
$result=mysql_query($sql);
 
WHILE ($row=mysql_fetch_assoc($result)){
$lotteryWin+=$row["zakaz"];
 
}
 
$adv_list_db = mysql_query("SELECT * FROM everyday_comprekl WHERE date = '$dattta' order by zakaz desc");
 
$adv_list = mysql_fetch_assoc($adv_list_db);
 
 
?>
<br>
<table class='reyt'>
<tr>
<td style="border-right:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC;" align="center">#</td>
<td style="border-right:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC;" align="center">Логин</td>
<td style="border-right:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC;" align="center">Сумма</td>
<td style="border-right:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC;" align="center">Шанс выигрыша</td>
 
</tr>
 
 
<?
$i = 1;
do{
$shans1 = $adv_list["zakaz"] / $lotteryWin;
$shans = $shans1*100;
 
?>
 
 
<tr>
<td style="border-right:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC;" align="center"><?=$i++; ?></td>
<td style="border-right:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC;" align="center"><?=$adv_list["username"]; ?></td>
<td style="border-right:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC;" align="center"><?=round($adv_list["zakaz"],3); ?> руб.</td>
<td style="border-right:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC;" align="center"><?=round($shans, 2); ?> %</td>
</tr>
 
 
<?
 
}while($adv_list = mysql_fetch_assoc($adv_list_db));
?>
</table><BR />
 
 
</center>
Как можно выбрать рандомно 1-го пользователя, но исходя из вероятности? Вероятность у каждого выводится из переменной $shans в таблицу...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2014, 20:20
Ответы с готовыми решениями:

Рандомные числа с вероятностью выпадения
Всё здравствуйте. Помогите знающие люди пожалуйста, как реализовать php...

Надо составить условие и генерацию рандомного числа
Помогите сгенерировать рандомное число от 1 до 5 и записать его в некоторую...

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

Вывод рандомного списка дуэлей, если id пользователя ещё нет в БД
Доброе время суток! имеется таблица `duels` в которой поля (которые имеют...

Занесение в таблицу рандомного числа, но оно не должно повторятся
мне нужно занесение в таблицу рандомного числа, но оно не должно повторятся. То...

3
pav1uxa
1857 / 1711 / 802
Регистрация: 23.01.2014
Сообщений: 6,082
Завершенные тесты: 1
07.05.2014, 23:12 2
Цитата Сообщение от HapKoT Посмотреть сообщение
Как можно выбрать рандомно 1-го пользователя, но исходя из вероятности?
Накидал небольшой пример
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
37
38
39
40
41
42
43
44
45
46
<?
$p['user1']=0.9;
$p['user2']=0.7;
$p['user3']=0.5;
$p['user4']=0.3;
$p['user5']=0.1;
$w = array();
function shuffle_assoc($array) 
{ 
   $keys = array_keys($array); 
   shuffle($keys); 
   return array_merge(array_flip($keys), $array); 
}
function getWinner($p)
{
    $p=shuffle_assoc($p);
    $winner="";
    foreach ($p as $k => $v)
    {
        $r = rand(0,100)/100;
        if ($r < $v)
        {
            $winner = $k;
            break;
        }
    }
    if (empty($winner))
    {
        end($p);
        $winner = key($p);
    }
    return $winner;
}
for ($i=0; $i < 20; $i++)
{
    $tmp = getWinner($p);
    if (isset($w[$tmp]))
        $w[$tmp]++;
    else
        $w[$tmp] = 1;
    echo "And The Winner Is... ".$tmp."!</br>\r\n";
}
ksort($w);
foreach ($w as $k => $w)
    echo "User $k won $w times.</br>\r\n";
?>
0
HapKoT
5 / 5 / 5
Регистрация: 31.01.2014
Сообщений: 107
09.05.2014, 02:26  [ТС] 3
Вобщем ночью подумал и сделал так.
PHPHTML
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
37
38
39
40
41
42
43
44
45
46
47
48
Запросы...
 
<table class='reyt'>
<tr>
<td style="border-right:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC;" align="center">#</td>
<td style="border-right:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC;" align="center">Логин</td>
<td style="border-right:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC;" align="center">Сумма</td>
<td style="border-right:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC;" align="center">Шанс выигрыша</td>
</tr>
 
 
<?
$i = 1;
$n = 1;
 
do{
$shans1 = $adv_list["zakaz"] / $lotteryWin;
$shans = $shans1*10000;
$shans7 = $shans/100;
 
?>
 
<tr>
<td style="border-right:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC;" align="center"><?=$i++; ?></td>
<td style="border-right:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC;" align="center"><?=$adv_list["username"]; ?></td>
<td style="border-right:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC;" align="center"><?=round($adv_list["zakaz"],3); ?> руб.</td>
<td style="border-right:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC;" align="center"><?=round($shans7, 2); ?> %</td>
</tr>
<?
 
 
 
 
 
     while ($n<=$shans7) {
     $opred_p[$n++] = $adv_list['username'];    
     }
 
     
     print '<pre>';
     print_r($opred_p);
     print '</pre>';    
 
 
}while($adv_list = mysql_fetch_assoc($adv_list_db));
 
?>
</table><BR />
Вроде бы должен вывести столько массивов, сколько пользователей участвуют. В каждом должен быть логин пользователя столько раз, какие у него шансы на победу.
Причём цифра в [] в массиве (не помню как называется) должна идти по порядку. т.е. что-то вроде этого должно получится

Кликните здесь для просмотра всего текста
Array
(
[1] => user
[2] => user
[3] => user
[4] => user
[5] => user
[6] => user
[7] => user
[8] => user
[9] => user
[10] => user
[11] => user
[12] => user
[13] => user
[14] => user
[15] => user
[16] => user
[17] => user
[18] => user
[19] => user
[20] => user
[21] => user
[22] => user
[23] => user
[24] => user
[25] => user
[26] => user
[27] => user
[28] => user
[29] => user
[30] => user
[31] => user
[32] => user
[33] => user
[34] => user
[35] => user
[36] => user
[37] => user
[38] => user
[39] => user
[40] => user
[41] => user
[42] => user
[43] => user
[44] => user
[45] => user
[46] => user
[47] => user
[48] => user
[49] => user
[50] => user
[51] => user
[52] => user
[53] => user
[54] => user
[55] => user
[56] => user
[57] => user
[58] => user
[59] => user
[60] => user
[61] => user
[62] => user
[63] => user
[64] => user
[65] => user
[66] => user
[67] => user
[68] => user
[69] => user
[70] => user
[71] => user
[72] => user
[73] => user
[74] => user
[75] => user
[76] => user
[77] => user
[78] => user
[79] => user
[80] => user
[81] => user
[82] => user
[83] => user
[84] => user
[85] => user
[86] => user
[87] => user
)
Array
(
[88] => admin
[89] => admin
[90] => admin
[91] => admin
[92] => admin
[93] => admin
[94] => admin
[95] => admin
[96] => admin
[97] => admin
[98] => admin
[99] => admin
)
Array
(
[100] => testuser
)


Добавлено через 11 часов 35 минут
Up
0
HapKoT
5 / 5 / 5
Регистрация: 31.01.2014
Сообщений: 107
14.05.2014, 19:12  [ТС] 4
Помогите, пожалуйста, кто-нибудь
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2014, 19:12

Вывод рандомного числа
Вообщем нужна кнопка, которая будет выводить рандомное число от 1 до 12, но с...

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru