Что нового

почему $d=0 ?

modnik

Знающий
Сообщения
138
Репутация
13
Код:
for $a=0 to 10000 Step 1
	$b = Random(1,2)
	$c = Random(1,2)
	if $b = $c then $d = $d +1
	Next
MsgBox($d,0,0)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
А почему нет?

У меня есть другая задачка:

Код:
If Random(100, 200, 1) = Random(100, 200, 1) Then MsgBox(64, 0, "No random? o_O")


Почему MsgBox так и не появляется? :-\

или вот ещё:

Код:
If Random(1, 2, 1) = Random(1, 2, 1) Then MsgBox(64, 0, "No random? o_O")


Почему MsgBox появляется "через раз"? :wacko:


Добавлено:
Сообщение автоматически объединено:

modnik [?]
Мда... а в справке что сказано к первому параметру? или ко второму, третьему...
 

SyDr

Сидра
Сообщения
651
Репутация
158
modnik
If $b = $c then $d = $d +1

1) Переменные то объявлять надо. В этом варианте скрипт вообще ошибку выдаёт
2) В MsgBox первый параметр - это флаг. По такому MsgBox ты не сможешь узнать значение $d :laugh:
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Код:
MsgBox($d,0,0)

Впервые такое вижу О_о
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Я думаю, что это должно выглядеть так:

Код:
$d = 0
For $a = 1 To 10000
	If Random(1, 2, 1) = Random(1, 2, 1) Then
		$d += 1
	EndIf
Next

MsgBox(0, '', $d)


Тогда, это можно сильно упростить:

Код:
MsgBox(0, '', '$d =~ 5000')


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

P1 (Random(1, 2, 1) = 1|2) = 0.5
P2 (Random(1, 2, 1) = 1|2) = 0.5

В этом случае получается, что

P = P1 * P2 = 0.25

Т.е. МО = 0.25 * 10000 = 2500, а на деле 5000?

:(
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Yashied [?]
Я думаю, что это должно выглядеть так
Или так:
Код:
$d = 0

For $a = 1 To 10000
	$d += Random(1, 2, 1) = Random(1, 2, 1)
Next

MsgBox(0, '', $d)


это можно сильно упростить
Вот так например:
Код:
MsgBox(0, '', Random(4800, 5200, 1))

у меня первый пример не выдаёт число ниже чем 4800 и выше чем 5200.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Все, разобрался, где я был не прав. Вот теорема.

Можно еще записать так:

Код:
$d = 0
For $a = 1 To 10000
	$n1 = Random(1, 2, 1)
	$n2 = Random(1, 2, 1)
	If (($n1 = 1) And ($n2 = 1)) Or (($n1 = 2) And ($n2 = 2)) Then
		$d += 1
	EndIf
Next

MsgBox(0, '', $d)



Добавлено:
Сообщение автоматически объединено:

{TopicNameWarn.SModer}

Лучше поздно, чем никогда.

:smile:
 
Верх