add for hw4

This commit is contained in:
2025-11-09 17:36:29 +09:00
parent 2cd6c98104
commit 49355f8f54
8 changed files with 1117 additions and 0 deletions

6
hws/hw4/README.md Normal file
View File

@@ -0,0 +1,6 @@
# Numerical Analysis Homework 4
`REPORT.md`가 보고서입니다.
`output.txt`는 콘솔 출력으로 `main.c`의 출력결과입니다.
`main.c``rng.c`, `rngutil.c`와 같이 컴파일해야합니다.

10
hws/hw4/REPORT.md Normal file
View File

@@ -0,0 +1,10 @@
# Numerical Analysis Homework 3 Report
각 샘플 크기 (100, 1000, 10000, 100000)에 대해서 난수 생성을 하여 만든 샘플에 대해서 히스토그램을 그렸습니다. 그린 히스토그램은 `output.txt`에 있습니다.
난수 생성을 할 때 만든 난수 생성기는 Linear Congruential Generator로 만들었고 소스코드는 `rng.c`에 있습니다.
샘플 크기가 작을때(100)는 에서는 제대로된 샘플의 형상을 보기 힘들었고
샘플 크기가 커짐에 따라 형상이 제대로 보이기 시작했습니다.
1000일때에는 유니폼 난수에서 노이즈가 많이 있어서 예상과 달리 평탄하지 못했고, 마찬가지로 가우시안에서도 노이즈가 많은 느낌이었습니다.
10000이후부터는 예상과 거의 맞아 떨어졌고, 형상이 제대로 보였습니다. (평탄한 직선, 종모양).

62
hws/hw4/main.c Normal file
View File

@@ -0,0 +1,62 @@
#include <stdio.h>
#include <stdlib.h>
#include "rng.h"
#include "rngutil.h"
int cmp(const void *a, const void *b) {
float af = *(float *) a;
float bf = *(float *) b;
if (bf - af > 0) {
return -1;
} else if (bf - af < 0) {
return 1;
} else {
return 0;
}
}
int main() {
rng *base = get_rng(8);
const size_t n_ns = 4;
size_t ns[] = {100, 1000, 10000, 100000};
float **samples = calloc(n_ns * 2, sizeof(float *));
size_t i, j;
for (i = 0; i < n_ns; i++) {
samples[i * 2] = calloc(ns[i], sizeof(float));
samples[i * 2 + 1] = calloc(ns[i], sizeof(float));
for (j = 0; j < ns[i]; j++) {
samples[i * 2][j] = rng_uniform(base, -3, 4);
samples[i * 2 + 1][j] = rng_gaussian(base, 0.5, 1.5);
}
qsort(samples[i * 2], ns[i], sizeof(float), cmp);
qsort(samples[i * 2 + 1], ns[i], sizeof(float), cmp);
}
Interval *interval1 = new_interval(100);
Interval *interval2 = new_interval(100);
for (i = 0; i < n_ns; i++) {
intervalizing(interval1, ns[i], samples[i * 2]);
intervalizing(interval2, ns[i], samples[i * 2 + 1]);
printf("=== Uniform Distribution #%lu\n", i);
print_histogram(interval1, ns[i], samples[i * 2]);
printf("=== Gaussian Distribution #%lu\n", i);
print_histogram(interval2, ns[i], samples[i * 2 + 1]);
}
for (j = 0; j < n_ns * 2; j++) {
free(samples[j]);
}
free(samples);
free_interval(interval1);
free_interval(interval2);
free_rng(base);
base = NULL;
return 0;
}

848
hws/hw4/output.txt Normal file
View File

@@ -0,0 +1,848 @@
=== Uniform Distribution #0
------------------------------------------------------
# Histogram (n_samples: 100, avg_bin: 1.00) #
# (scale ref.: 4.00 count = 80 stars) #
# min: -2.98, max: 3.99
Bin 0: [ 1]( 1.00%) | ********************
Bin 1: [ 1]( 1.00%) | ********************
Bin 2: [ 2]( 2.00%) | ****************************************
Bin 3: [ 2]( 2.00%) | ****************************************
Bin 4: [ 0]( 0.00%) |
Bin 5: [ 1]( 1.00%) | ********************
Bin 6: [ 1]( 1.00%) | ********************
Bin 7: [ 1]( 1.00%) | ********************
Bin 8: [ 1]( 1.00%) | ********************
Bin 9: [ 2]( 2.00%) | ****************************************
Bin 10: [ 0]( 0.00%) |
Bin 11: [ 1]( 1.00%) | ********************
Bin 12: [ 0]( 0.00%) |
Bin 13: [ 2]( 2.00%) | ****************************************
Bin 14: [ 0]( 0.00%) |
Bin 15: [ 3]( 3.00%) | ************************************************************
Bin 16: [ 3]( 3.00%) | ************************************************************
Bin 17: [ 1]( 1.00%) | ********************
Bin 18: [ 0]( 0.00%) |
Bin 19: [ 2]( 2.00%) | ****************************************
Bin 20: [ 0]( 0.00%) |
Bin 21: [ 0]( 0.00%) |
Bin 22: [ 1]( 1.00%) | ********************
Bin 23: [ 0]( 0.00%) |
Bin 24: [ 1]( 1.00%) | ********************
Bin 25: [ 0]( 0.00%) |
Bin 26: [ 0]( 0.00%) |
Bin 27: [ 2]( 2.00%) | ****************************************
Bin 28: [ 1]( 1.00%) | ********************
Bin 29: [ 0]( 0.00%) |
Bin 30: [ 1]( 1.00%) | ********************
Bin 31: [ 1]( 1.00%) | ********************
Bin 32: [ 2]( 2.00%) | ****************************************
Bin 33: [ 2]( 2.00%) | ****************************************
Bin 34: [ 0]( 0.00%) |
Bin 35: [ 1]( 1.00%) | ********************
Bin 36: [ 1]( 1.00%) | ********************
Bin 37: [ 1]( 1.00%) | ********************
Bin 38: [ 1]( 1.00%) | ********************
Bin 39: [ 1]( 1.00%) | ********************
Bin 40: [ 3]( 3.00%) | ************************************************************
Bin 41: [ 1]( 1.00%) | ********************
Bin 42: [ 0]( 0.00%) |
Bin 43: [ 1]( 1.00%) | ********************
Bin 44: [ 1]( 1.00%) | ********************
Bin 45: [ 0]( 0.00%) |
Bin 46: [ 1]( 1.00%) | ********************
Bin 47: [ 0]( 0.00%) |
Bin 48: [ 1]( 1.00%) | ********************
Bin 49: [ 0]( 0.00%) |
Bin 50: [ 2]( 2.00%) | ****************************************
Bin 51: [ 1]( 1.00%) | ********************
Bin 52: [ 1]( 1.00%) | ********************
Bin 53: [ 0]( 0.00%) |
Bin 54: [ 0]( 0.00%) |
Bin 55: [ 1]( 1.00%) | ********************
Bin 56: [ 0]( 0.00%) |
Bin 57: [ 0]( 0.00%) |
Bin 58: [ 2]( 2.00%) | ****************************************
Bin 59: [ 0]( 0.00%) |
Bin 60: [ 0]( 0.00%) |
Bin 61: [ 0]( 0.00%) |
Bin 62: [ 0]( 0.00%) |
Bin 63: [ 2]( 2.00%) | ****************************************
Bin 64: [ 2]( 2.00%) | ****************************************
Bin 65: [ 0]( 0.00%) |
Bin 66: [ 1]( 1.00%) | ********************
Bin 67: [ 2]( 2.00%) | ****************************************
Bin 68: [ 1]( 1.00%) | ********************
Bin 69: [ 2]( 2.00%) | ****************************************
Bin 70: [ 0]( 0.00%) |
Bin 71: [ 1]( 1.00%) | ********************
Bin 72: [ 0]( 0.00%) |
Bin 73: [ 4]( 4.00%) | ********************************************************************************
Bin 74: [ 1]( 1.00%) | ********************
Bin 75: [ 1]( 1.00%) | ********************
Bin 76: [ 2]( 2.00%) | ****************************************
Bin 77: [ 0]( 0.00%) |
Bin 78: [ 1]( 1.00%) | ********************
Bin 79: [ 1]( 1.00%) | ********************
Bin 80: [ 4]( 4.00%) | ********************************************************************************
Bin 81: [ 2]( 2.00%) | ****************************************
Bin 82: [ 2]( 2.00%) | ****************************************
Bin 83: [ 2]( 2.00%) | ****************************************
Bin 84: [ 1]( 1.00%) | ********************
Bin 85: [ 1]( 1.00%) | ********************
Bin 86: [ 0]( 0.00%) |
Bin 87: [ 1]( 1.00%) | ********************
Bin 88: [ 0]( 0.00%) |
Bin 89: [ 0]( 0.00%) |
Bin 90: [ 3]( 3.00%) | ************************************************************
Bin 91: [ 2]( 2.00%) | ****************************************
Bin 92: [ 2]( 2.00%) | ****************************************
Bin 93: [ 1]( 1.00%) | ********************
Bin 94: [ 0]( 0.00%) |
Bin 95: [ 1]( 1.00%) | ********************
Bin 96: [ 1]( 1.00%) | ********************
Bin 97: [ 0]( 0.00%) |
Bin 98: [ 0]( 0.00%) |
Bin 99: [ 1]( 1.00%) | ********************
------------------------------------------------------
=== Gaussian Distribution #0
------------------------------------------------------
# Histogram (n_samples: 100, avg_bin: 1.00) #
# (scale ref.: 4.00 count = 80 stars) #
# min: -2.88, max: 3.69
Bin 0: [ 1]( 1.00%) | ********************
Bin 1: [ 0]( 0.00%) |
Bin 2: [ 0]( 0.00%) |
Bin 3: [ 0]( 0.00%) |
Bin 4: [ 1]( 1.00%) | ********************
Bin 5: [ 0]( 0.00%) |
Bin 6: [ 0]( 0.00%) |
Bin 7: [ 0]( 0.00%) |
Bin 8: [ 0]( 0.00%) |
Bin 9: [ 0]( 0.00%) |
Bin 10: [ 0]( 0.00%) |
Bin 11: [ 0]( 0.00%) |
Bin 12: [ 0]( 0.00%) |
Bin 13: [ 0]( 0.00%) |
Bin 14: [ 0]( 0.00%) |
Bin 15: [ 1]( 1.00%) | ********************
Bin 16: [ 0]( 0.00%) |
Bin 17: [ 0]( 0.00%) |
Bin 18: [ 1]( 1.00%) | ********************
Bin 19: [ 1]( 1.00%) | ********************
Bin 20: [ 1]( 1.00%) | ********************
Bin 21: [ 1]( 1.00%) | ********************
Bin 22: [ 1]( 1.00%) | ********************
Bin 23: [ 1]( 1.00%) | ********************
Bin 24: [ 1]( 1.00%) | ********************
Bin 25: [ 0]( 0.00%) |
Bin 26: [ 1]( 1.00%) | ********************
Bin 27: [ 1]( 1.00%) | ********************
Bin 28: [ 0]( 0.00%) |
Bin 29: [ 0]( 0.00%) |
Bin 30: [ 1]( 1.00%) | ********************
Bin 31: [ 0]( 0.00%) |
Bin 32: [ 2]( 2.00%) | ****************************************
Bin 33: [ 3]( 3.00%) | ************************************************************
Bin 34: [ 2]( 2.00%) | ****************************************
Bin 35: [ 1]( 1.00%) | ********************
Bin 36: [ 0]( 0.00%) |
Bin 37: [ 4]( 4.00%) | ********************************************************************************
Bin 38: [ 1]( 1.00%) | ********************
Bin 39: [ 2]( 2.00%) | ****************************************
Bin 40: [ 1]( 1.00%) | ********************
Bin 41: [ 0]( 0.00%) |
Bin 42: [ 2]( 2.00%) | ****************************************
Bin 43: [ 1]( 1.00%) | ********************
Bin 44: [ 0]( 0.00%) |
Bin 45: [ 1]( 1.00%) | ********************
Bin 46: [ 4]( 4.00%) | ********************************************************************************
Bin 47: [ 1]( 1.00%) | ********************
Bin 48: [ 1]( 1.00%) | ********************
Bin 49: [ 2]( 2.00%) | ****************************************
Bin 50: [ 1]( 1.00%) | ********************
Bin 51: [ 2]( 2.00%) | ****************************************
Bin 52: [ 1]( 1.00%) | ********************
Bin 53: [ 3]( 3.00%) | ************************************************************
Bin 54: [ 3]( 3.00%) | ************************************************************
Bin 55: [ 0]( 0.00%) |
Bin 56: [ 1]( 1.00%) | ********************
Bin 57: [ 1]( 1.00%) | ********************
Bin 58: [ 1]( 1.00%) | ********************
Bin 59: [ 5]( 5.00%) | ********************************************************************************+
Bin 60: [ 1]( 1.00%) | ********************
Bin 61: [ 2]( 2.00%) | ****************************************
Bin 62: [ 1]( 1.00%) | ********************
Bin 63: [ 0]( 0.00%) |
Bin 64: [ 1]( 1.00%) | ********************
Bin 65: [ 1]( 1.00%) | ********************
Bin 66: [ 2]( 2.00%) | ****************************************
Bin 67: [ 0]( 0.00%) |
Bin 68: [ 2]( 2.00%) | ****************************************
Bin 69: [ 2]( 2.00%) | ****************************************
Bin 70: [ 4]( 4.00%) | ********************************************************************************
Bin 71: [ 1]( 1.00%) | ********************
Bin 72: [ 1]( 1.00%) | ********************
Bin 73: [ 3]( 3.00%) | ************************************************************
Bin 74: [ 1]( 1.00%) | ********************
Bin 75: [ 1]( 1.00%) | ********************
Bin 76: [ 2]( 2.00%) | ****************************************
Bin 77: [ 2]( 2.00%) | ****************************************
Bin 78: [ 0]( 0.00%) |
Bin 79: [ 1]( 1.00%) | ********************
Bin 80: [ 2]( 2.00%) | ****************************************
Bin 81: [ 1]( 1.00%) | ********************
Bin 82: [ 0]( 0.00%) |
Bin 83: [ 1]( 1.00%) | ********************
Bin 84: [ 1]( 1.00%) | ********************
Bin 85: [ 1]( 1.00%) | ********************
Bin 86: [ 0]( 0.00%) |
Bin 87: [ 1]( 1.00%) | ********************
Bin 88: [ 2]( 2.00%) | ****************************************
Bin 89: [ 0]( 0.00%) |
Bin 90: [ 1]( 1.00%) | ********************
Bin 91: [ 0]( 0.00%) |
Bin 92: [ 1]( 1.00%) | ********************
Bin 93: [ 0]( 0.00%) |
Bin 94: [ 0]( 0.00%) |
Bin 95: [ 0]( 0.00%) |
Bin 96: [ 0]( 0.00%) |
Bin 97: [ 0]( 0.00%) |
Bin 98: [ 1]( 1.00%) | ********************
Bin 99: [ 1]( 1.00%) | ********************
------------------------------------------------------
=== Uniform Distribution #1
------------------------------------------------------
# Histogram (n_samples: 1000, avg_bin: 10.00) #
# (scale ref.: 40.00 count = 80 stars) #
# min: -3.00, max: 3.99
Bin 0: [ 13]( 1.30%) | **************************
Bin 1: [ 10]( 1.00%) | ********************
Bin 2: [ 10]( 1.00%) | ********************
Bin 3: [ 8]( 0.80%) | ****************
Bin 4: [ 10]( 1.00%) | ********************
Bin 5: [ 20]( 2.00%) | ****************************************
Bin 6: [ 12]( 1.20%) | ************************
Bin 7: [ 8]( 0.80%) | ****************
Bin 8: [ 5]( 0.50%) | **********
Bin 9: [ 14]( 1.40%) | ****************************
Bin 10: [ 10]( 1.00%) | ********************
Bin 11: [ 8]( 0.80%) | ****************
Bin 12: [ 9]( 0.90%) | ******************
Bin 13: [ 11]( 1.10%) | **********************
Bin 14: [ 16]( 1.60%) | ********************************
Bin 15: [ 13]( 1.30%) | **************************
Bin 16: [ 8]( 0.80%) | ****************
Bin 17: [ 6]( 0.60%) | ************
Bin 18: [ 9]( 0.90%) | ******************
Bin 19: [ 14]( 1.40%) | ****************************
Bin 20: [ 10]( 1.00%) | ********************
Bin 21: [ 12]( 1.20%) | ************************
Bin 22: [ 7]( 0.70%) | **************
Bin 23: [ 9]( 0.90%) | ******************
Bin 24: [ 16]( 1.60%) | ********************************
Bin 25: [ 12]( 1.20%) | ************************
Bin 26: [ 8]( 0.80%) | ****************
Bin 27: [ 9]( 0.90%) | ******************
Bin 28: [ 12]( 1.20%) | ************************
Bin 29: [ 16]( 1.60%) | ********************************
Bin 30: [ 6]( 0.60%) | ************
Bin 31: [ 6]( 0.60%) | ************
Bin 32: [ 12]( 1.20%) | ************************
Bin 33: [ 12]( 1.20%) | ************************
Bin 34: [ 11]( 1.10%) | **********************
Bin 35: [ 7]( 0.70%) | **************
Bin 36: [ 18]( 1.80%) | ************************************
Bin 37: [ 11]( 1.10%) | **********************
Bin 38: [ 3]( 0.30%) | ******
Bin 39: [ 10]( 1.00%) | ********************
Bin 40: [ 15]( 1.50%) | ******************************
Bin 41: [ 14]( 1.40%) | ****************************
Bin 42: [ 12]( 1.20%) | ************************
Bin 43: [ 12]( 1.20%) | ************************
Bin 44: [ 18]( 1.80%) | ************************************
Bin 45: [ 7]( 0.70%) | **************
Bin 46: [ 7]( 0.70%) | **************
Bin 47: [ 16]( 1.60%) | ********************************
Bin 48: [ 7]( 0.70%) | **************
Bin 49: [ 6]( 0.60%) | ************
Bin 50: [ 11]( 1.10%) | **********************
Bin 51: [ 8]( 0.80%) | ****************
Bin 52: [ 5]( 0.50%) | **********
Bin 53: [ 14]( 1.40%) | ****************************
Bin 54: [ 9]( 0.90%) | ******************
Bin 55: [ 10]( 1.00%) | ********************
Bin 56: [ 7]( 0.70%) | **************
Bin 57: [ 7]( 0.70%) | **************
Bin 58: [ 7]( 0.70%) | **************
Bin 59: [ 8]( 0.80%) | ****************
Bin 60: [ 13]( 1.30%) | **************************
Bin 61: [ 13]( 1.30%) | **************************
Bin 62: [ 6]( 0.60%) | ************
Bin 63: [ 10]( 1.00%) | ********************
Bin 64: [ 7]( 0.70%) | **************
Bin 65: [ 4]( 0.40%) | ********
Bin 66: [ 12]( 1.20%) | ************************
Bin 67: [ 7]( 0.70%) | **************
Bin 68: [ 7]( 0.70%) | **************
Bin 69: [ 11]( 1.10%) | **********************
Bin 70: [ 10]( 1.00%) | ********************
Bin 71: [ 8]( 0.80%) | ****************
Bin 72: [ 12]( 1.20%) | ************************
Bin 73: [ 11]( 1.10%) | **********************
Bin 74: [ 9]( 0.90%) | ******************
Bin 75: [ 9]( 0.90%) | ******************
Bin 76: [ 8]( 0.80%) | ****************
Bin 77: [ 13]( 1.30%) | **************************
Bin 78: [ 14]( 1.40%) | ****************************
Bin 79: [ 12]( 1.20%) | ************************
Bin 80: [ 11]( 1.10%) | **********************
Bin 81: [ 6]( 0.60%) | ************
Bin 82: [ 9]( 0.90%) | ******************
Bin 83: [ 9]( 0.90%) | ******************
Bin 84: [ 1]( 0.10%) | **
Bin 85: [ 15]( 1.50%) | ******************************
Bin 86: [ 11]( 1.10%) | **********************
Bin 87: [ 9]( 0.90%) | ******************
Bin 88: [ 13]( 1.30%) | **************************
Bin 89: [ 8]( 0.80%) | ****************
Bin 90: [ 5]( 0.50%) | **********
Bin 91: [ 11]( 1.10%) | **********************
Bin 92: [ 5]( 0.50%) | **********
Bin 93: [ 12]( 1.20%) | ************************
Bin 94: [ 11]( 1.10%) | **********************
Bin 95: [ 4]( 0.40%) | ********
Bin 96: [ 8]( 0.80%) | ****************
Bin 97: [ 9]( 0.90%) | ******************
Bin 98: [ 15]( 1.50%) | ******************************
Bin 99: [ 11]( 1.10%) | **********************
------------------------------------------------------
=== Gaussian Distribution #1
------------------------------------------------------
# Histogram (n_samples: 1000, avg_bin: 10.00) #
# (scale ref.: 40.00 count = 80 stars) #
# min: -4.81, max: 5.64
Bin 0: [ 1]( 0.10%) | **
Bin 1: [ 0]( 0.00%) |
Bin 2: [ 0]( 0.00%) |
Bin 3: [ 1]( 0.10%) | **
Bin 4: [ 0]( 0.00%) |
Bin 5: [ 0]( 0.00%) |
Bin 6: [ 0]( 0.00%) |
Bin 7: [ 0]( 0.00%) |
Bin 8: [ 0]( 0.00%) |
Bin 9: [ 0]( 0.00%) |
Bin 10: [ 1]( 0.10%) | **
Bin 11: [ 2]( 0.20%) | ****
Bin 12: [ 0]( 0.00%) |
Bin 13: [ 2]( 0.20%) | ****
Bin 14: [ 1]( 0.10%) | **
Bin 15: [ 0]( 0.00%) |
Bin 16: [ 2]( 0.20%) | ****
Bin 17: [ 2]( 0.20%) | ****
Bin 18: [ 2]( 0.20%) | ****
Bin 19: [ 0]( 0.00%) |
Bin 20: [ 2]( 0.20%) | ****
Bin 21: [ 4]( 0.40%) | ********
Bin 22: [ 3]( 0.30%) | ******
Bin 23: [ 6]( 0.60%) | ************
Bin 24: [ 5]( 0.50%) | **********
Bin 25: [ 2]( 0.20%) | ****
Bin 26: [ 7]( 0.70%) | **************
Bin 27: [ 8]( 0.80%) | ****************
Bin 28: [ 11]( 1.10%) | **********************
Bin 29: [ 6]( 0.60%) | ************
Bin 30: [ 12]( 1.20%) | ************************
Bin 31: [ 8]( 0.80%) | ****************
Bin 32: [ 11]( 1.10%) | **********************
Bin 33: [ 10]( 1.00%) | ********************
Bin 34: [ 20]( 2.00%) | ****************************************
Bin 35: [ 17]( 1.70%) | **********************************
Bin 36: [ 13]( 1.30%) | **************************
Bin 37: [ 17]( 1.70%) | **********************************
Bin 38: [ 17]( 1.70%) | **********************************
Bin 39: [ 22]( 2.20%) | ********************************************
Bin 40: [ 19]( 1.90%) | **************************************
Bin 41: [ 21]( 2.10%) | ******************************************
Bin 42: [ 22]( 2.20%) | ********************************************
Bin 43: [ 34]( 3.40%) | ********************************************************************
Bin 44: [ 21]( 2.10%) | ******************************************
Bin 45: [ 18]( 1.80%) | ************************************
Bin 46: [ 24]( 2.40%) | ************************************************
Bin 47: [ 25]( 2.50%) | **************************************************
Bin 48: [ 24]( 2.40%) | ************************************************
Bin 49: [ 28]( 2.80%) | ********************************************************
Bin 50: [ 40]( 4.00%) | ********************************************************************************
Bin 51: [ 25]( 2.50%) | **************************************************
Bin 52: [ 25]( 2.50%) | **************************************************
Bin 53: [ 34]( 3.40%) | ********************************************************************
Bin 54: [ 26]( 2.60%) | ****************************************************
Bin 55: [ 25]( 2.50%) | **************************************************
Bin 56: [ 35]( 3.50%) | **********************************************************************
Bin 57: [ 25]( 2.50%) | **************************************************
Bin 58: [ 25]( 2.50%) | **************************************************
Bin 59: [ 21]( 2.10%) | ******************************************
Bin 60: [ 24]( 2.40%) | ************************************************
Bin 61: [ 18]( 1.80%) | ************************************
Bin 62: [ 25]( 2.50%) | **************************************************
Bin 63: [ 24]( 2.40%) | ************************************************
Bin 64: [ 20]( 2.00%) | ****************************************
Bin 65: [ 14]( 1.40%) | ****************************
Bin 66: [ 19]( 1.90%) | **************************************
Bin 67: [ 10]( 1.00%) | ********************
Bin 68: [ 12]( 1.20%) | ************************
Bin 69: [ 5]( 0.50%) | **********
Bin 70: [ 14]( 1.40%) | ****************************
Bin 71: [ 9]( 0.90%) | ******************
Bin 72: [ 8]( 0.80%) | ****************
Bin 73: [ 8]( 0.80%) | ****************
Bin 74: [ 7]( 0.70%) | **************
Bin 75: [ 9]( 0.90%) | ******************
Bin 76: [ 4]( 0.40%) | ********
Bin 77: [ 4]( 0.40%) | ********
Bin 78: [ 11]( 1.10%) | **********************
Bin 79: [ 5]( 0.50%) | **********
Bin 80: [ 2]( 0.20%) | ****
Bin 81: [ 2]( 0.20%) | ****
Bin 82: [ 1]( 0.10%) | **
Bin 83: [ 0]( 0.00%) |
Bin 84: [ 2]( 0.20%) | ****
Bin 85: [ 3]( 0.30%) | ******
Bin 86: [ 1]( 0.10%) | **
Bin 87: [ 0]( 0.00%) |
Bin 88: [ 3]( 0.30%) | ******
Bin 89: [ 0]( 0.00%) |
Bin 90: [ 2]( 0.20%) | ****
Bin 91: [ 1]( 0.10%) | **
Bin 92: [ 0]( 0.00%) |
Bin 93: [ 0]( 0.00%) |
Bin 94: [ 0]( 0.00%) |
Bin 95: [ 0]( 0.00%) |
Bin 96: [ 0]( 0.00%) |
Bin 97: [ 0]( 0.00%) |
Bin 98: [ 0]( 0.00%) |
Bin 99: [ 1]( 0.10%) | **
------------------------------------------------------
=== Uniform Distribution #2
------------------------------------------------------
# Histogram (n_samples: 10000, avg_bin: 100.00) #
# (scale ref.: 400.00 count = 80 stars) #
# min: -3.00, max: 4.00
Bin 0: [ 95]( 0.95%) | *******************
Bin 1: [ 115]( 1.15%) | ***********************
Bin 2: [ 104]( 1.04%) | ********************
Bin 3: [ 83]( 0.83%) | ****************
Bin 4: [ 93]( 0.93%) | ******************
Bin 5: [ 92]( 0.92%) | ******************
Bin 6: [ 95]( 0.95%) | *******************
Bin 7: [ 98]( 0.98%) | *******************
Bin 8: [ 107]( 1.07%) | *********************
Bin 9: [ 111]( 1.11%) | **********************
Bin 10: [ 110]( 1.10%) | **********************
Bin 11: [ 91]( 0.91%) | ******************
Bin 12: [ 92]( 0.92%) | ******************
Bin 13: [ 103]( 1.03%) | ********************
Bin 14: [ 96]( 0.96%) | *******************
Bin 15: [ 96]( 0.96%) | *******************
Bin 16: [ 87]( 0.87%) | *****************
Bin 17: [ 92]( 0.92%) | ******************
Bin 18: [ 98]( 0.98%) | *******************
Bin 19: [ 114]( 1.14%) | **********************
Bin 20: [ 84]( 0.84%) | ****************
Bin 21: [ 125]( 1.25%) | *************************
Bin 22: [ 93]( 0.93%) | ******************
Bin 23: [ 111]( 1.11%) | **********************
Bin 24: [ 96]( 0.96%) | *******************
Bin 25: [ 114]( 1.14%) | **********************
Bin 26: [ 115]( 1.15%) | ***********************
Bin 27: [ 109]( 1.09%) | *********************
Bin 28: [ 93]( 0.93%) | ******************
Bin 29: [ 101]( 1.01%) | ********************
Bin 30: [ 104]( 1.04%) | ********************
Bin 31: [ 107]( 1.07%) | *********************
Bin 32: [ 101]( 1.01%) | ********************
Bin 33: [ 90]( 0.90%) | ******************
Bin 34: [ 89]( 0.89%) | *****************
Bin 35: [ 109]( 1.09%) | *********************
Bin 36: [ 88]( 0.88%) | *****************
Bin 37: [ 98]( 0.98%) | *******************
Bin 38: [ 116]( 1.16%) | ***********************
Bin 39: [ 105]( 1.05%) | *********************
Bin 40: [ 79]( 0.79%) | ***************
Bin 41: [ 95]( 0.95%) | *******************
Bin 42: [ 126]( 1.26%) | *************************
Bin 43: [ 97]( 0.97%) | *******************
Bin 44: [ 120]( 1.20%) | ************************
Bin 45: [ 104]( 1.04%) | ********************
Bin 46: [ 101]( 1.01%) | ********************
Bin 47: [ 105]( 1.05%) | *********************
Bin 48: [ 89]( 0.89%) | *****************
Bin 49: [ 103]( 1.03%) | ********************
Bin 50: [ 103]( 1.03%) | ********************
Bin 51: [ 99]( 0.99%) | *******************
Bin 52: [ 82]( 0.82%) | ****************
Bin 53: [ 108]( 1.08%) | *********************
Bin 54: [ 99]( 0.99%) | *******************
Bin 55: [ 101]( 1.01%) | ********************
Bin 56: [ 100]( 1.00%) | ********************
Bin 57: [ 92]( 0.92%) | ******************
Bin 58: [ 102]( 1.02%) | ********************
Bin 59: [ 96]( 0.96%) | *******************
Bin 60: [ 91]( 0.91%) | ******************
Bin 61: [ 108]( 1.08%) | *********************
Bin 62: [ 102]( 1.02%) | ********************
Bin 63: [ 113]( 1.13%) | **********************
Bin 64: [ 103]( 1.03%) | ********************
Bin 65: [ 107]( 1.07%) | *********************
Bin 66: [ 99]( 0.99%) | *******************
Bin 67: [ 84]( 0.84%) | ****************
Bin 68: [ 108]( 1.08%) | *********************
Bin 69: [ 106]( 1.06%) | *********************
Bin 70: [ 104]( 1.04%) | ********************
Bin 71: [ 98]( 0.98%) | *******************
Bin 72: [ 108]( 1.08%) | *********************
Bin 73: [ 99]( 0.99%) | *******************
Bin 74: [ 94]( 0.94%) | ******************
Bin 75: [ 98]( 0.98%) | *******************
Bin 76: [ 91]( 0.91%) | ******************
Bin 77: [ 100]( 1.00%) | ********************
Bin 78: [ 89]( 0.89%) | *****************
Bin 79: [ 111]( 1.11%) | **********************
Bin 80: [ 105]( 1.05%) | *********************
Bin 81: [ 104]( 1.04%) | ********************
Bin 82: [ 102]( 1.02%) | ********************
Bin 83: [ 73]( 0.73%) | **************
Bin 84: [ 91]( 0.91%) | ******************
Bin 85: [ 111]( 1.11%) | **********************
Bin 86: [ 88]( 0.88%) | *****************
Bin 87: [ 114]( 1.14%) | **********************
Bin 88: [ 103]( 1.03%) | ********************
Bin 89: [ 109]( 1.09%) | *********************
Bin 90: [ 97]( 0.97%) | *******************
Bin 91: [ 99]( 0.99%) | *******************
Bin 92: [ 91]( 0.91%) | ******************
Bin 93: [ 106]( 1.06%) | *********************
Bin 94: [ 99]( 0.99%) | *******************
Bin 95: [ 84]( 0.84%) | ****************
Bin 96: [ 103]( 1.03%) | ********************
Bin 97: [ 95]( 0.95%) | *******************
Bin 98: [ 100]( 1.00%) | ********************
Bin 99: [ 92]( 0.92%) | ******************
------------------------------------------------------
=== Gaussian Distribution #2
------------------------------------------------------
# Histogram (n_samples: 10000, avg_bin: 100.00) #
# (scale ref.: 400.00 count = 80 stars) #
# min: -5.33, max: 6.16
Bin 0: [ 1]( 0.01%) |
Bin 1: [ 0]( 0.00%) |
Bin 2: [ 0]( 0.00%) |
Bin 3: [ 1]( 0.01%) |
Bin 4: [ 0]( 0.00%) |
Bin 5: [ 1]( 0.01%) |
Bin 6: [ 1]( 0.01%) |
Bin 7: [ 1]( 0.01%) |
Bin 8: [ 3]( 0.03%) |
Bin 9: [ 2]( 0.02%) |
Bin 10: [ 5]( 0.05%) | *
Bin 11: [ 6]( 0.06%) | *
Bin 12: [ 0]( 0.00%) |
Bin 13: [ 4]( 0.04%) |
Bin 14: [ 3]( 0.03%) |
Bin 15: [ 5]( 0.05%) | *
Bin 16: [ 14]( 0.14%) | **
Bin 17: [ 20]( 0.20%) | ****
Bin 18: [ 18]( 0.18%) | ***
Bin 19: [ 19]( 0.19%) | ***
Bin 20: [ 20]( 0.20%) | ****
Bin 21: [ 24]( 0.24%) | ****
Bin 22: [ 27]( 0.27%) | *****
Bin 23: [ 33]( 0.33%) | ******
Bin 24: [ 43]( 0.43%) | ********
Bin 25: [ 43]( 0.43%) | ********
Bin 26: [ 46]( 0.46%) | *********
Bin 27: [ 71]( 0.71%) | **************
Bin 28: [ 66]( 0.66%) | *************
Bin 29: [ 81]( 0.81%) | ****************
Bin 30: [ 86]( 0.86%) | *****************
Bin 31: [ 124]( 1.24%) | ************************
Bin 32: [ 109]( 1.09%) | *********************
Bin 33: [ 156]( 1.56%) | *******************************
Bin 34: [ 131]( 1.31%) | **************************
Bin 35: [ 152]( 1.52%) | ******************************
Bin 36: [ 191]( 1.91%) | **************************************
Bin 37: [ 177]( 1.77%) | ***********************************
Bin 38: [ 183]( 1.83%) | ************************************
Bin 39: [ 211]( 2.11%) | ******************************************
Bin 40: [ 229]( 2.29%) | *********************************************
Bin 41: [ 256]( 2.56%) | ***************************************************
Bin 42: [ 246]( 2.46%) | *************************************************
Bin 43: [ 251]( 2.51%) | **************************************************
Bin 44: [ 268]( 2.68%) | *****************************************************
Bin 45: [ 274]( 2.74%) | ******************************************************
Bin 46: [ 301]( 3.01%) | ************************************************************
Bin 47: [ 311]( 3.11%) | **************************************************************
Bin 48: [ 309]( 3.09%) | *************************************************************
Bin 49: [ 289]( 2.89%) | *********************************************************
Bin 50: [ 296]( 2.96%) | ***********************************************************
Bin 51: [ 278]( 2.78%) | *******************************************************
Bin 52: [ 314]( 3.14%) | **************************************************************
Bin 53: [ 302]( 3.02%) | ************************************************************
Bin 54: [ 283]( 2.83%) | ********************************************************
Bin 55: [ 273]( 2.73%) | ******************************************************
Bin 56: [ 277]( 2.77%) | *******************************************************
Bin 57: [ 251]( 2.51%) | **************************************************
Bin 58: [ 253]( 2.53%) | **************************************************
Bin 59: [ 249]( 2.49%) | *************************************************
Bin 60: [ 235]( 2.35%) | ***********************************************
Bin 61: [ 240]( 2.40%) | ************************************************
Bin 62: [ 182]( 1.82%) | ************************************
Bin 63: [ 196]( 1.96%) | ***************************************
Bin 64: [ 177]( 1.77%) | ***********************************
Bin 65: [ 156]( 1.56%) | *******************************
Bin 66: [ 158]( 1.58%) | *******************************
Bin 67: [ 141]( 1.41%) | ****************************
Bin 68: [ 114]( 1.14%) | **********************
Bin 69: [ 106]( 1.06%) | *********************
Bin 70: [ 107]( 1.07%) | *********************
Bin 71: [ 83]( 0.83%) | ****************
Bin 72: [ 63]( 0.63%) | ************
Bin 73: [ 67]( 0.67%) | *************
Bin 74: [ 56]( 0.56%) | ***********
Bin 75: [ 71]( 0.71%) | **************
Bin 76: [ 43]( 0.43%) | ********
Bin 77: [ 33]( 0.33%) | ******
Bin 78: [ 28]( 0.28%) | *****
Bin 79: [ 31]( 0.31%) | ******
Bin 80: [ 26]( 0.26%) | *****
Bin 81: [ 27]( 0.27%) | *****
Bin 82: [ 9]( 0.09%) | *
Bin 83: [ 15]( 0.15%) | ***
Bin 84: [ 13]( 0.13%) | **
Bin 85: [ 8]( 0.08%) | *
Bin 86: [ 5]( 0.05%) | *
Bin 87: [ 5]( 0.05%) | *
Bin 88: [ 4]( 0.04%) |
Bin 89: [ 5]( 0.05%) | *
Bin 90: [ 2]( 0.02%) |
Bin 91: [ 2]( 0.02%) |
Bin 92: [ 1]( 0.01%) |
Bin 93: [ 1]( 0.01%) |
Bin 94: [ 0]( 0.00%) |
Bin 95: [ 1]( 0.01%) |
Bin 96: [ 0]( 0.00%) |
Bin 97: [ 0]( 0.00%) |
Bin 98: [ 0]( 0.00%) |
Bin 99: [ 1]( 0.01%) |
------------------------------------------------------
=== Uniform Distribution #3
------------------------------------------------------
# Histogram (n_samples: 100000, avg_bin: 1000.00) #
# (scale ref.: 4000.00 count = 80 stars) #
# min: -3.00, max: 4.00
Bin 0: [ 1000]( 1.00%) | ********************
Bin 1: [ 975]( 0.97%) | *******************
Bin 2: [ 920]( 0.92%) | ******************
Bin 3: [ 1004]( 1.00%) | ********************
Bin 4: [ 1010]( 1.01%) | ********************
Bin 5: [ 999]( 1.00%) | *******************
Bin 6: [ 1018]( 1.02%) | ********************
Bin 7: [ 958]( 0.96%) | *******************
Bin 8: [ 966]( 0.97%) | *******************
Bin 9: [ 942]( 0.94%) | ******************
Bin 10: [ 964]( 0.96%) | *******************
Bin 11: [ 1033]( 1.03%) | ********************
Bin 12: [ 1041]( 1.04%) | ********************
Bin 13: [ 956]( 0.96%) | *******************
Bin 14: [ 1001]( 1.00%) | ********************
Bin 15: [ 998]( 1.00%) | *******************
Bin 16: [ 1002]( 1.00%) | ********************
Bin 17: [ 992]( 0.99%) | *******************
Bin 18: [ 1057]( 1.06%) | *********************
Bin 19: [ 1014]( 1.01%) | ********************
Bin 20: [ 997]( 1.00%) | *******************
Bin 21: [ 1025]( 1.03%) | ********************
Bin 22: [ 1005]( 1.00%) | ********************
Bin 23: [ 992]( 0.99%) | *******************
Bin 24: [ 1015]( 1.01%) | ********************
Bin 25: [ 981]( 0.98%) | *******************
Bin 26: [ 986]( 0.99%) | *******************
Bin 27: [ 986]( 0.99%) | *******************
Bin 28: [ 1008]( 1.01%) | ********************
Bin 29: [ 1053]( 1.05%) | *********************
Bin 30: [ 1038]( 1.04%) | ********************
Bin 31: [ 1009]( 1.01%) | ********************
Bin 32: [ 1010]( 1.01%) | ********************
Bin 33: [ 1023]( 1.02%) | ********************
Bin 34: [ 1030]( 1.03%) | ********************
Bin 35: [ 980]( 0.98%) | *******************
Bin 36: [ 995]( 1.00%) | *******************
Bin 37: [ 1028]( 1.03%) | ********************
Bin 38: [ 1000]( 1.00%) | ********************
Bin 39: [ 999]( 1.00%) | *******************
Bin 40: [ 987]( 0.99%) | *******************
Bin 41: [ 960]( 0.96%) | *******************
Bin 42: [ 1045]( 1.04%) | ********************
Bin 43: [ 1089]( 1.09%) | *********************
Bin 44: [ 1026]( 1.03%) | ********************
Bin 45: [ 995]( 1.00%) | *******************
Bin 46: [ 991]( 0.99%) | *******************
Bin 47: [ 970]( 0.97%) | *******************
Bin 48: [ 994]( 0.99%) | *******************
Bin 49: [ 1006]( 1.01%) | ********************
Bin 50: [ 963]( 0.96%) | *******************
Bin 51: [ 1045]( 1.04%) | ********************
Bin 52: [ 1024]( 1.02%) | ********************
Bin 53: [ 986]( 0.99%) | *******************
Bin 54: [ 936]( 0.94%) | ******************
Bin 55: [ 990]( 0.99%) | *******************
Bin 56: [ 1016]( 1.02%) | ********************
Bin 57: [ 982]( 0.98%) | *******************
Bin 58: [ 1033]( 1.03%) | ********************
Bin 59: [ 1017]( 1.02%) | ********************
Bin 60: [ 1028]( 1.03%) | ********************
Bin 61: [ 921]( 0.92%) | ******************
Bin 62: [ 994]( 0.99%) | *******************
Bin 63: [ 1030]( 1.03%) | ********************
Bin 64: [ 1006]( 1.01%) | ********************
Bin 65: [ 1032]( 1.03%) | ********************
Bin 66: [ 995]( 1.00%) | *******************
Bin 67: [ 963]( 0.96%) | *******************
Bin 68: [ 998]( 1.00%) | *******************
Bin 69: [ 990]( 0.99%) | *******************
Bin 70: [ 943]( 0.94%) | ******************
Bin 71: [ 967]( 0.97%) | *******************
Bin 72: [ 1047]( 1.05%) | ********************
Bin 73: [ 1018]( 1.02%) | ********************
Bin 74: [ 986]( 0.99%) | *******************
Bin 75: [ 1011]( 1.01%) | ********************
Bin 76: [ 950]( 0.95%) | *******************
Bin 77: [ 956]( 0.96%) | *******************
Bin 78: [ 999]( 1.00%) | *******************
Bin 79: [ 981]( 0.98%) | *******************
Bin 80: [ 975]( 0.97%) | *******************
Bin 81: [ 960]( 0.96%) | *******************
Bin 82: [ 1016]( 1.02%) | ********************
Bin 83: [ 1026]( 1.03%) | ********************
Bin 84: [ 993]( 0.99%) | *******************
Bin 85: [ 1022]( 1.02%) | ********************
Bin 86: [ 989]( 0.99%) | *******************
Bin 87: [ 955]( 0.95%) | *******************
Bin 88: [ 994]( 0.99%) | *******************
Bin 89: [ 997]( 1.00%) | *******************
Bin 90: [ 1002]( 1.00%) | ********************
Bin 91: [ 1039]( 1.04%) | ********************
Bin 92: [ 1008]( 1.01%) | ********************
Bin 93: [ 1080]( 1.08%) | *********************
Bin 94: [ 1054]( 1.05%) | *********************
Bin 95: [ 987]( 0.99%) | *******************
Bin 96: [ 1047]( 1.05%) | ********************
Bin 97: [ 975]( 0.97%) | *******************
Bin 98: [ 1027]( 1.03%) | ********************
Bin 99: [ 974]( 0.97%) | *******************
------------------------------------------------------
=== Gaussian Distribution #3
------------------------------------------------------
# Histogram (n_samples: 100000, avg_bin: 1000.00) #
# (scale ref.: 4000.00 count = 80 stars) #
# min: -6.38, max: 7.31
Bin 0: [ 1]( 0.00%) |
Bin 1: [ 0]( 0.00%) |
Bin 2: [ 0]( 0.00%) |
Bin 3: [ 0]( 0.00%) |
Bin 4: [ 0]( 0.00%) |
Bin 5: [ 1]( 0.00%) |
Bin 6: [ 1]( 0.00%) |
Bin 7: [ 6]( 0.01%) |
Bin 8: [ 2]( 0.00%) |
Bin 9: [ 2]( 0.00%) |
Bin 10: [ 5]( 0.01%) |
Bin 11: [ 5]( 0.01%) |
Bin 12: [ 15]( 0.01%) |
Bin 13: [ 9]( 0.01%) |
Bin 14: [ 23]( 0.02%) |
Bin 15: [ 30]( 0.03%) |
Bin 16: [ 27]( 0.03%) |
Bin 17: [ 48]( 0.05%) |
Bin 18: [ 54]( 0.05%) | *
Bin 19: [ 76]( 0.08%) | *
Bin 20: [ 108]( 0.11%) | **
Bin 21: [ 119]( 0.12%) | **
Bin 22: [ 145]( 0.14%) | **
Bin 23: [ 171]( 0.17%) | ***
Bin 24: [ 230]( 0.23%) | ****
Bin 25: [ 281]( 0.28%) | *****
Bin 26: [ 345]( 0.34%) | ******
Bin 27: [ 419]( 0.42%) | ********
Bin 28: [ 486]( 0.49%) | *********
Bin 29: [ 609]( 0.61%) | ************
Bin 30: [ 734]( 0.73%) | **************
Bin 31: [ 837]( 0.84%) | ****************
Bin 32: [ 983]( 0.98%) | *******************
Bin 33: [ 1140]( 1.14%) | **********************
Bin 34: [ 1308]( 1.31%) | **************************
Bin 35: [ 1529]( 1.53%) | ******************************
Bin 36: [ 1671]( 1.67%) | *********************************
Bin 37: [ 1882]( 1.88%) | *************************************
Bin 38: [ 2066]( 2.07%) | *****************************************
Bin 39: [ 2333]( 2.33%) | **********************************************
Bin 40: [ 2418]( 2.42%) | ************************************************
Bin 41: [ 2692]( 2.69%) | *****************************************************
Bin 42: [ 2700]( 2.70%) | ******************************************************
Bin 43: [ 3041]( 3.04%) | ************************************************************
Bin 44: [ 3085]( 3.08%) | *************************************************************
Bin 45: [ 3297]( 3.30%) | *****************************************************************
Bin 46: [ 3395]( 3.40%) | *******************************************************************
Bin 47: [ 3595]( 3.60%) | ***********************************************************************
Bin 48: [ 3579]( 3.58%) | ***********************************************************************
Bin 49: [ 3591]( 3.59%) | ***********************************************************************
Bin 50: [ 3624]( 3.62%) | ************************************************************************
Bin 51: [ 3587]( 3.59%) | ***********************************************************************
Bin 52: [ 3603]( 3.60%) | ************************************************************************
Bin 53: [ 3451]( 3.45%) | *********************************************************************
Bin 54: [ 3365]( 3.36%) | *******************************************************************
Bin 55: [ 3183]( 3.18%) | ***************************************************************
Bin 56: [ 3135]( 3.14%) | **************************************************************
Bin 57: [ 3000]( 3.00%) | ************************************************************
Bin 58: [ 2661]( 2.66%) | *****************************************************
Bin 59: [ 2580]( 2.58%) | ***************************************************
Bin 60: [ 2342]( 2.34%) | **********************************************
Bin 61: [ 2176]( 2.18%) | *******************************************
Bin 62: [ 1952]( 1.95%) | ***************************************
Bin 63: [ 1747]( 1.75%) | **********************************
Bin 64: [ 1571]( 1.57%) | *******************************
Bin 65: [ 1379]( 1.38%) | ***************************
Bin 66: [ 1222]( 1.22%) | ************************
Bin 67: [ 1032]( 1.03%) | ********************
Bin 68: [ 918]( 0.92%) | ******************
Bin 69: [ 778]( 0.78%) | ***************
Bin 70: [ 662]( 0.66%) | *************
Bin 71: [ 552]( 0.55%) | ***********
Bin 72: [ 505]( 0.51%) | **********
Bin 73: [ 356]( 0.36%) | *******
Bin 74: [ 325]( 0.33%) | ******
Bin 75: [ 244]( 0.24%) | ****
Bin 76: [ 219]( 0.22%) | ****
Bin 77: [ 163]( 0.16%) | ***
Bin 78: [ 133]( 0.13%) | **
Bin 79: [ 96]( 0.10%) | *
Bin 80: [ 84]( 0.08%) | *
Bin 81: [ 75]( 0.07%) | *
Bin 82: [ 49]( 0.05%) |
Bin 83: [ 39]( 0.04%) |
Bin 84: [ 27]( 0.03%) |
Bin 85: [ 23]( 0.02%) |
Bin 86: [ 10]( 0.01%) |
Bin 87: [ 7]( 0.01%) |
Bin 88: [ 10]( 0.01%) |
Bin 89: [ 8]( 0.01%) |
Bin 90: [ 2]( 0.00%) |
Bin 91: [ 3]( 0.00%) |
Bin 92: [ 4]( 0.00%) |
Bin 93: [ 1]( 0.00%) |
Bin 94: [ 1]( 0.00%) |
Bin 95: [ 0]( 0.00%) |
Bin 96: [ 0]( 0.00%) |
Bin 97: [ 1]( 0.00%) |
Bin 98: [ 0]( 0.00%) |
Bin 99: [ 1]( 0.00%) |
------------------------------------------------------

69
hws/hw4/rng.c Normal file
View File

@@ -0,0 +1,69 @@
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "rng.h"
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
float _rng_next_float(rng *rng) {
uint64_t state = (uint64_t)rng->seed;
state = (6364136223846793005ULL * state) + 1ULL;
rng->seed = (int64_t)state;
uint32_t high_bits = (uint32_t)(state >> 40);
return (float)high_bits * (1.0f / 16777216.0f);
}
rng *get_rng(int64_t seed) {
rng *r = (rng *)malloc(sizeof(rng));
if (r == NULL) {
return NULL;
}
r->seed = seed;
return r;
}
void free_rng(rng* rng) {
free(rng);
}
float rng_uniform(rng *rng, float a, float b) {
float r = _rng_next_float(rng);
return a + r * (b - a);
}
float rng_gaussian(rng *rng, float m, float s) {
static int has_spare = 0;
static float spare;
if (has_spare) {
has_spare = 0;
return m + s * spare;
}
has_spare = 1;
float u1, u2;
do {
u1 = _rng_next_float(rng);
} while (u1 == 0.0f);
u2 = _rng_next_float(rng);
float mag = s * sqrt(-2.0f * log(u1));
float z1 = mag * cos(2.0f * M_PI * u2) + m;
float z2 = mag * sin(2.0f * M_PI * u2);
mag = sqrt(-2.0f * log(u1));
z1 = mag * cos(2.0f * M_PI * u2);
spare = mag * sin(2.0f * M_PI * u2);
return m + s * z1;
}

15
hws/hw4/rng.h Normal file
View File

@@ -0,0 +1,15 @@
#pragma once
#include <stdint.h>
typedef struct rng {
int64_t seed;
} rng;
rng *get_rng(int64_t seed);
void free_rng(rng* rng);
float rng_uniform(rng *rng, float a, float b);
float rng_gaussian(rng *rng, float m, float s);

90
hws/hw4/rngutil.c Normal file
View File

@@ -0,0 +1,90 @@
#include "rngutil.h"
Interval *new_interval(size_t n_int) {
Interval *x = malloc(sizeof(Interval));
x->n_interval = n_int;
x->indexed = calloc(n_int, sizeof(size_t));
return x;
}
void free_interval(Interval *x) {
free(x->indexed);
free(x);
}
void intervalizing(Interval *interval, size_t n,
float *samples /* samples must be sorted */) {
float lo = samples[0];
float hi = samples[n - 1];
float dx = (hi - lo) / interval->n_interval;
float curr = lo + dx;
size_t i = 0;
size_t ind = 0;
while (i < n) {
if (samples[i] < curr) {
i++;
} else {
if (ind == interval->n_interval - 1) {
interval->indexed[ind] = n;
} else {
interval->indexed[ind] = i;
}
ind++;
curr = lo + (ind + 1) * dx;
}
}
if (interval->indexed[interval->n_interval - 1] != n) {
interval->indexed[interval->n_interval - 1] = n;
}
}
void print_histogram(Interval *interval, size_t n, float *samples) {
size_t n_interval = interval->n_interval;
size_t prev_cum_count = 0;
const int MAX_STARS = 80;
double avg_count = (double) n / (double) n_interval;
double scale_max = avg_count * 4;
printf("------------------------------------------------------\n");
printf("# Histogram (n_samples: %zu, avg_bin: %.2f) #\n",
n, avg_count);
printf("# (scale ref.: %.2f count = %d stars) #\n",
scale_max, MAX_STARS);
printf("# min: %6.2f, max: %6.2f\n",
samples[0], samples[n - 1]);
size_t i, j;
for (i = 0; i < n_interval; i++) {
size_t current_cumulative_count = interval->indexed[i];
size_t individual_count = current_cumulative_count - prev_cum_count;
if (current_cumulative_count < prev_cum_count) {
printf("!\n");
individual_count = 0;
}
int num_stars = (int) (((double) individual_count / scale_max) * MAX_STARS);
if (num_stars > MAX_STARS) {
num_stars = MAX_STARS;
}
printf("Bin %3zu: [%8zu](%5.2f%%) | ", i, individual_count, (double) individual_count / (double) n * 100.0);
for (j = 0; j < num_stars; j++) {
printf("*");
}
if (num_stars == MAX_STARS && (double) individual_count > scale_max) {
printf("+");
}
printf("\n");
prev_cum_count = current_cumulative_count;
}
printf("------------------------------------------------------\n");
}

17
hws/hw4/rngutil.h Normal file
View File

@@ -0,0 +1,17 @@
#include <math.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct Interval {
size_t n_interval;
size_t *indexed;
} Interval;
Interval *new_interval(size_t n_int);
void free_interval(Interval *x);
void intervalizing(Interval *interval, size_t n, float *samples);
void print_histogram(Interval *interval, size_t n, float* samples);