Advertisement
Guest User

Untitled

a guest
Dec 12th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.32 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.concurrent.ThreadLocalRandom;
  3. import java.util.Scanner;
  4.  
  5. public class Igori {
  6.  
  7.     public static void main(String[] args) {
  8.  
  9.         int mainAmountSum, probabilitySum;
  10.         mainAmountSum = probabilitySum = 0;
  11.  
  12.         double p, n = 10000;
  13.  
  14.         Scanner keyboard = new Scanner(System.in);
  15.  
  16.         // Ввожу вероятность, что кси = 1
  17.         System.out.println("Enter p:");
  18.         p = keyboard.nextDouble();
  19.  
  20.         // Повторяю эксперимент 10000 раз
  21.         for (int j = 0; j < 10000; j++) {
  22.  
  23.             ArrayList<Integer> ksiArray = new ArrayList<>();
  24.  
  25.             // Создаю множество величин "Кси"
  26.             for (int i = 0; i < n; i++) {
  27.                 double randomValue = ThreadLocalRandom.current().nextDouble(0, 1);
  28.                 if (randomValue < p) {
  29.                     ksiArray.add(1);
  30.                 } else {
  31.                     ksiArray.add(0);
  32.                 }
  33.             }
  34.  
  35.             ArrayList<Integer> etaArray = new ArrayList<>();
  36.             int mainAmount = 0;
  37.  
  38.             // Создаю множество величин "Эта". Эта = 0, если 2 соседние величины кси равны между собой. Иначе 1
  39.             for (int i = 0; i < ksiArray.size() - 1; i++) {
  40.                 if (ksiArray.get(i).equals(ksiArray.get(i + 1))) {
  41.                     etaArray.add(0);
  42.                 } else {
  43.                     etaArray.add(1);
  44.                 }
  45.  
  46.                 // Считаю искомую величину
  47.                 mainAmount += etaArray.get(i);
  48.             }
  49.            
  50.             // Считаю сумму всех результатов экспериментов
  51.             mainAmountSum += mainAmount;
  52.             probabilitySum += (mainAmount >= n / 2) ? 1 : 0;
  53.         }
  54.  
  55.         // Нахожу вероятность события A и математическое ожидание искомой величины
  56.         double probability = probabilitySum / 10000.0;
  57.         double mathematicalExpectation = mainAmountSum / 10000.0;
  58.         System.out.println("Probability A = " + probability);
  59.         System.out.println("Mathematical Expectation = " + mathematicalExpectation);
  60.  
  61.     }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement