Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.concurrent.ThreadLocalRandom;
- import java.util.Scanner;
- public class Igori {
- public static void main(String[] args) {
- int mainAmountSum, probabilitySum;
- mainAmountSum = probabilitySum = 0;
- double p, n = 10000;
- Scanner keyboard = new Scanner(System.in);
- // Ввожу вероятность, что кси = 1
- System.out.println("Enter p:");
- p = keyboard.nextDouble();
- // Повторяю эксперимент 10000 раз
- for (int j = 0; j < 10000; j++) {
- ArrayList<Integer> ksiArray = new ArrayList<>();
- // Создаю множество величин "Кси"
- for (int i = 0; i < n; i++) {
- double randomValue = ThreadLocalRandom.current().nextDouble(0, 1);
- if (randomValue < p) {
- ksiArray.add(1);
- } else {
- ksiArray.add(0);
- }
- }
- ArrayList<Integer> etaArray = new ArrayList<>();
- int mainAmount = 0;
- // Создаю множество величин "Эта". Эта = 0, если 2 соседние величины кси равны между собой. Иначе 1
- for (int i = 0; i < ksiArray.size() - 1; i++) {
- if (ksiArray.get(i).equals(ksiArray.get(i + 1))) {
- etaArray.add(0);
- } else {
- etaArray.add(1);
- }
- // Считаю искомую величину
- mainAmount += etaArray.get(i);
- }
- // Считаю сумму всех результатов экспериментов
- mainAmountSum += mainAmount;
- probabilitySum += (mainAmount >= n / 2) ? 1 : 0;
- }
- // Нахожу вероятность события A и математическое ожидание искомой величины
- double probability = probabilitySum / 10000.0;
- double mathematicalExpectation = mainAmountSum / 10000.0;
- System.out.println("Probability A = " + probability);
- System.out.println("Mathematical Expectation = " + mathematicalExpectation);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement