powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Вывести с шансом
7 сообщений из 7, страница 1 из 1
Вывести с шансом
    #37728758
jemoje
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скрипт выводит с определённым шансом название
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<?php
$items=array(
	//Название;Шанс
	"Название1;10",
	"Название2;20",
	"Название3;50"
);

$rand=mt_rand(0,100);
if(count($items) > 0)
{
	foreach ($items as $item)
	{
		list($name, $chance) = split(";", $item, 2);

		if ($chance >= $rand)
		{
			echo $name;
			break;
		}
	}
}
?>



Проблема в том что чаше всего выводиться Название1 у которого шанс 10.

Как правильнее реализовать?
...
Рейтинг: 0 / 0
Вывести с шансом
    #37728763
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jemoje,

1) шанс может быть а может не быть. у вас скорее вероятность выпадения?
2) друг на друга они влияют? ведь по идее они могут все три выпасть сразу. или у вас только одно должно выпасть? какие тогда условия?
3) что вы вообще хотите сделать? объясните условия начальной задачи. вы приводите неправильный код и хотите чтоб мы по нему поняли что вам нужно?
...
Рейтинг: 0 / 0
Вывести с шансом
    #37728769
jemoje
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r u,
Имеется несколько элементов и шанс вывода их
Код: plaintext
1.
2.
Название1         Шанс 10%
Название2         Шанс 20%
Название3         Шанс 50%

Должен выводиться только один элемент с тем шансом который ему дан.
...
Рейтинг: 0 / 0
Вывести с шансом
    #37728778
jemoje
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jemojeДолжен выводиться только один элемент с тем шансом который ему дан.

Т.е. из 100 выводов, Название1 должен быть показан 10 раз, Название2 - 20 раз, Название2 - 50 раз.
...
Рейтинг: 0 / 0
Вывести с шансом
    #37728807
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jemoje,

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
$items=array(
	"Название1;10",
	"Название2;20",
	"Название3;50"
);
$items = array_reverse($items);
foreach(range(1,100) as $i) { // прогоняем 100 раз
	$rnd = mt_rand(0,100); // случайное число
	foreach ($items as $item) { 
		list($v, $k) = explode(';', $item, 2);
		if ($rnd>=$k) {
			echo $v;
			break;
		}
	}
}
...
Рейтинг: 0 / 0
Вывести с шансом
    #37728963
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r u,

может все же
Код: php
1.
if ($rnd<=$k) {


а то получаеться из 100 рандомов $rnd будет больше 10 90 раз, и шанс в 10% сработает
...
Рейтинг: 0 / 0
Вывести с шансом
    #37729005
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ренатr u,

может все же
Код: php
1.
if ($rnd<=$k) {


а то получаеться из 100 рандомов $rnd будет больше 10 90 раз, и шанс в 10% сработает
но сначала то проверяется бОльшая вероятность, те 50, 20, 10. потому она чаще и срабатывает.

или речь о другом?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Вывести с шансом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]