Что нового

Шанс выполнения действия

La2Angel

Новичок
Сообщения
156
Репутация
1
Хотел бы узнать, есть ли функции, при помощи которой, можно запустить там сообщение с шансов в 10% или там 50%
 

AZJIO

Меценат
Меценат
Сообщения
2,903
Репутация
1,200
La2Angel
Код:
$iRand = Random(1, 100, 1)
If $iRand > 90 Then
	MsgBox(0, 'Сообщение', 'Это сообщение вылетает 1 раз и 10')
Else
	MsgBox(0, 'Сообщение', 'Это сообщение вылетает 9 раз и 10')
EndIf
 

Nazgul666

Знающий
Сообщения
21
Репутация
9
Код:
$iRand = Random(1, 100, 1)
	Switch $iRand
	Case 1 To 40
		ConsoleWrite('В 40% случаев пауза 5-60 секунд'&@CRLF)
		sleep(random(5000, 60000))
	Case 41 To 70
		ConsoleWrite('В 30% случаев пауза 1-5 минут'&@CRLF)
		sleep(random(60000, 300000))
	Case 71 To 90
		ConsoleWrite('В 20% случаев пауза 5-10 минут'&@CRLF)
		sleep(random(300000, 600000))
	Case 91 To 100
		ConsoleWrite('Ну и в 10% случаев пауза 10-20 минут'&@CRLF)
		sleep(random(600000, 1200000))
	EndSwitch
 
Автор
L

La2Angel

Новичок
Сообщения
156
Репутация
1
Забавно, в общем малой функции нету и нужно пилить от 1 до 100% самому :smile: так в принципе и подумал, спасибо за разьяснения:smile:
 
Автор
L

La2Angel

Новичок
Сообщения
156
Репутация
1
Накидал такой вариант, мб кому понадобится, а лучше помогите более точно реализовать :smile:

Код:
$Chance = 90 ; Шанс выполнить действие.
$i = 0 
$a = 0

While 1
$i += 1
$msg = Random(1,100,1)

If $msg <= $Chance Then
	$a += 1
	MsgBox(0,'','Вошел в ' & $Chance & '%. ' & @CRLF & 'Всего ' & $a & ' из ' & $i & '')
Else
	MsgBox(0,'','Не вошел в ' & $Chance & '%. ' & @CRLF & 'Всего ' & $a & ' из ' & $i & '')
EndIf

Wend


Покрайней мере, приближенно работает к тому, что нужно. Проверял, Random(1,100,1) выдает ближе числа к 100, а значит лучше использовать выражение $msg <= $Chance. Кто сможет более четко доработать, буду рад.
 
Верх