Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- function generateRandom($a, $b, $count){
- $randoms = array();
- for ($i=0;$i<=$count-1;$i++){
- $alfa = rand($b, $a)/100;
- $psi = ($b-$a)*$alfa + $a;
- $randoms[] = $psi;
- }
- return $randoms;
- }
- function generateStandartRandom($a, $b, $count){
- $randoms = array();
- for ($i=0;$i<=$count-1;$i++){
- $randoms[] = rand($a, $b);
- }
- return $randoms;
- }
- function getIntervals($count, $intervals){
- $per_interval = $count / $intervals;
- $intervals_arr = array();
- for ($i=0;$i<=$intervals-1;$i++){
- for ($j = $i*$per_interval+1;$j<=$i*$per_interval+$per_interval;$j++){
- $intervals_arr[$i][] = $j;
- }
- }
- return $intervals_arr;
- }
- function calcFrequence($sequence, $intervals){
- $frequence = array();
- foreach ($intervals as $index=>$interval){
- $frequence[$index] = 0;
- }
- foreach ($sequence as $sv){
- foreach ($intervals as $index=>$interval){
- if (($sv >= $interval[0] - 1) && ($sv < end($interval))){
- $frequence[$index]++;
- break;
- }
- }
- }
- return $frequence;
- }
- function getPSDomikom($mis, $count){
- $p_s_domom = array();
- foreach ($mis as $mi){
- $p_s_domom[] = $mi / $count;
- }
- return $p_s_domom;
- }
- function rashozhdenie($pis, $k, $n){
- $x = 0;
- $pi_teor = 1 / $k;
- foreach ($pis as $pi){
- $x += pow($pi - $pi_teor, 2) / $pi_teor;
- }
- return $x * $n;
- }
- if (count($_POST)){
- $a = $_POST['a'];
- $b = $_POST['b'];
- $count = $_POST['count'];
- $intervals = $_POST['intervals'];
- $ravnom_random = generateRandom($a, $b, $count);
- $std_random = generateStandartRandom($a, $b, $count);
- if ($a >= $b){
- $error = '<h1>A >= B ??!! Ну ты и Энштейн!</h1>';
- }elseif ($count % $intervals != 0){
- $error = '<h1>Отличненько... Выбери количество интервалов кратное количеству случайных чисел!</h1>';
- }else{
- $intervals_arr = getIntervals($count, $intervals);
- $frequence_ravnom = calcFrequence($ravnom_random, $intervals_arr);
- $frequence_std = calcFrequence($std_random, $intervals_arr);
- $veroyatmost_ravn = getPSDomikom($frequence_ravnom, $count);
- $veroyatmost_std = getPSDomikom($frequence_std, $count);
- $x2_ravn = rashozhdenie($veroyatmost_ravn, $intervals, $count);
- $x2_std = rashozhdenie($veroyatmost_std, $intervals, $count);
- }
- }
- ?><!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>МСС, ЛЗ-1</title>
- <style type="text/css">
- #result {
- width: 480px;
- padding: 10px;
- height: auto;
- overflow: auto;
- overflow-x: auto;
- -ms-overflow-x: hidden;
- background-color: #eee;
- border: 1px solid #323232;
- color: #323232;
- }
- input[type=text]{
- width: 500px;
- height: 32px;
- font-size: 26px;
- background-color: #eee;
- color: #323232;
- }
- #wrapper{
- width: 500px;
- border: 1px solid #323232;
- padding: 20px;
- margin-left: auto;
- margin-right: auto;
- background-color: #4A6D94;
- color: #ededed;
- border-radius: 10px;
- }
- input[type=submit] {
- width: 100px;
- height: 32px;
- margin-left: 405px;
- margin-top: 5px;
- }
- h2 {
- text-align: center;
- }
- a {
- color: #ededed;
- }
- #footer {
- text-align: center;
- font-size: 12px;
- }
- table {border: 1px solid black;border-collapse: collapse;}
- table td, table th {border: 1px solid black;border-collapse: collapse;}
- </style>
- </head>
- <body>
- <div id="wrapper">
- <?php if (!isset($error)):?>
- <form action="index.php" method="POST">
- <h2>Генерируем случайные числа</h2>
- <input type="text" name="a" placeholder="Нижний интервал" required="required" pattern="[0-9]{1,3}" <?php if (isset($a)):?>value="<?php echo $a;?>"<?php endif;?>><br/><br/>
- <input type="text" name="b" placeholder="Верхний интервал" required="required" pattern="[0-9]{1,3}" <?php if (isset($b)):?>value="<?php echo $b;?>"<?php endif;?>><br/><br/>
- <input type="text" name="count" placeholder="Количество элементов" required="required" pattern="[0-9]{1,3}" <?php if (isset($count)):?>value="<?php echo $count;?>"<?php endif;?>><br/><br/>
- <input type="text" name="intervals" placeholder="Количество интервалов" required="required" pattern="[0-9]{1,3}" <?php if (isset($intervals)):?>value="<?php echo $intervals;?>"<?php endif;?>><br/><br/>
- <input type="submit" value="Посчитал!"><br/><br/>
- </form>
- <?php if (isset($ravnom_random)):?>
- <div id="result">
- <h2>Входные параметры</h2>
- <h3>Случайная последовательность чисел распределенная по равномерному закону</h3>
- <table>
- <tr>
- <?php foreach ($ravnom_random as $digit):?>
- <td><?php echo $digit;?></td>
- <?php endforeach;?>
- </tr>
- </table>
- <h3>Случайная последовательность чисел через функцию <b>random</b></h3>
- <table>
- <tr>
- <?php foreach ($std_random as $digit):?>
- <td><?php echo $digit;?></td>
- <?php endforeach;?>
- </tr>
- </table>
- <h2>Равномерность</h2>
- <h3>Список интервалов</h3>
- <table>
- <?php foreach ($intervals_arr as $i=>$interval):?>
- <tr>
- <td>
- <b><?php echo $i;?>: </b>
- <?php foreach ($interval as $inter):echo $inter . ' '; endforeach;?>
- </td>
- </tr>
- <?php endforeach;?>
- </table>
- <h3>Частота и вероятность попадания в подинтервал</h3>
- <h4>Равномерное распределение</h4>
- <table>
- <tr><th>№ инт-ла</th><th>Mi</th><th>^pi</th></tr>
- <?php foreach ($frequence_ravnom as $index=>$frequence):?>
- <tr><td><b><?php echo $index;?></b></td><td><?php echo $frequence;?></td><td><?php echo $frequence / $count;?></td></tr>
- <?php endforeach;?>
- </table>
- <h4>Функция random</h4>
- <table>
- <tr><th>№ инт-ла</th><th>Mi</th><th>^pi</th></tr>
- <?php foreach ($frequence_std as $index=>$frequence):?>
- <tr><td><b><?php echo $index;?></b></td><td><?php echo $frequence;?></td><td><?php echo $frequence / $count;?></td></tr>
- <?php endforeach;?>
- </table>
- <h3>Вычисляем расхождение между экспериментальной и теоретической плотностями</h3>
- <h4>Равномерное распределение</h4>
- <b>x^2 = <?php echo $x2_ravn;?></b>
- <h4>Функция random</h4>
- <b>x^2 = <?php echo $x2_std;?></b>
- </div>
- <?php endif;?>
- <?php else:?>
- <?php echo $error;?>
- <?php endif;?>
- </div>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment