Основно съдържание
Програмиране
Курс: Програмиране > Раздел 1
Урок 10: Логически и if инструкции- If инструкции
- Предизвикателство: Подскачаща топка
- Още взаимодействия с мишка
- Предизвикателство: Първата ти програма за рисуване
- Булеви числа
- Предизвикателство: Числов анализатор
- Логически оператори
- Предизвикателство: Първият ти бутон
- Предизвикателство: По-умен бутон
- If/Else - част 1
- Предизвикателство: Flashy Flash Card
- If/Else - част 2
- Преглед: Логика и If конструкции
- Случайни числа
- Проект: Магическа топка 8
© 2023 Khan AcademyУсловия за ползванеДекларация за поверителностПолитика за Бисквитки
Случайни числа
Научи как да генерираш случайни числа в ProcessingJS, като използваш функцията random() и провериш техните стойности с if условия.
Досега сме използвали
if
операторите, за да проверяваме стойности, свързани със средата, като например позицията на мишката и да реагираме по предсказуем начин.Но какво да направим ако искаме непредсказуемост? Ако искаме програмата да бъде различна с всяко нейно пускане?
Произволността е нашият спасител!
Можем да генерираме произволни числа и да използваме
if
и else if
операторите, за да променим действията на програмата, според случайните стойности.Например:
var randNum = random(0, 10);
if (randNum < 5) {
text("Пакост!", 200, 200);
} else {
text("Лакомство!", 200, 200);
}
Програмата изкарва "Пакост!" през половината време и "Лакомство!" през другата половина.
Ето как работи:
- На променливата
randNum
е възложено произволно число от 0 до 10. Възможни стойности са 0; 0,2; 3,3; 4; 5,5; 6,9; 8; 9 или 9,9, но не и самата десятка. - Условието проверява, ако стойността е по-малка от 5, изкарвайки "Пакост!" в този случай и "Лакмоство!" в противен случай.
Понякоа е по-лесно да работим с цели числа, вместо с десетични, за да можем да проверяваме точни стойности. Ето няколко функции, които превръщат десетични числа в цели:
По принцип искаме да генерираме произволни числа с еднакъв шанс да бъдат избрани. Например, ако симулираме хвърляне на моента, очакваме да има равен шанс за "Ези" или "Тура".
Този код постига тази цел:
var randFlip = floor(random(0, 2));
if (randFlip === 0) {
text("Ези", 200, 200);
} else {
text("Тура", 200, 200);
}
Променливата
randFlip
винаги ще бъде 0 или 1, тъй като повиква floor()
на върнатата стойност от random(0,2)
.За да разбереш по-ясно защо това е така, тук са дадени резултатите от
floor()
функцията, повикана върху различни стойности от random(0,2)
:random(0, 2) | floor(result) |
---|---|
0.0 | 0 |
0.217… | 0 |
0.542… | 0 |
0.973… | 0 |
1.0 | 1 |
1.332… | 1 |
1.589… | 1 |
1.999… | 1 |
Получените от
random()
стойности са произволни, затова няма да изглеждат толкова равномерно разпределени, колкото стойностите в таблицата. Ако пуснеш програмата за хвърляне на монети, може да видиш низ ицяло от "Ези" или "Тура". Обаче, ако я пуснеш над хиляда пъти и следиш резултите, ще видиш "Ези" през 50% от времето и "Тура" през другите 50%.Като основно правило, когато искаме да получим равномерно разпределение на цели числа, най-добре e да използваме
floor()
с random()
. Функцията
random()
е стахотен начин да добавиш малко разнообразие към твоите програми. Въпреки това я използвай внимателно: открий обхвата от стойности, който генерираш, реши дали трябва да закръглиш и проверявай стойностите по подходящ начин.Ще имаш възможността сам да пробваш в следващия проект!
Искаш ли да се присъединиш към разговора?
Все още няма публикации.