1
0

Initial commit, Added example of stratified sampling

This commit is contained in:
Ishan Jain 2023-05-29 00:47:07 +05:30
commit 9bdd657018
Signed by: ishan
GPG Key ID: 0506DB2A1CC75C27
4 changed files with 128 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/target

85
Cargo.lock generated Normal file
View File

@ -0,0 +1,85 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "cfg-if"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "getrandom"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753"
dependencies = [
"cfg-if",
"libc",
"wasi",
]
[[package]]
name = "libc"
version = "0.2.107"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fbe5e23404da5b4f555ef85ebed98fb4083e55a00c317800bc2a50ede9f3d219"
[[package]]
name = "ppv-lite86"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed0cfbc8191465bed66e1718596ee0b0b35d5ee1f41c5df2189d0fe8bde535ba"
[[package]]
name = "rand"
version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8"
dependencies = [
"libc",
"rand_chacha",
"rand_core",
"rand_hc",
]
[[package]]
name = "rand_chacha"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
dependencies = [
"ppv-lite86",
"rand_core",
]
[[package]]
name = "rand_core"
version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
dependencies = [
"getrandom",
]
[[package]]
name = "rand_hc"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7"
dependencies = [
"rand_core",
]
[[package]]
name = "raytracing-the-rest-of-your-life"
version = "0.1.0"
dependencies = [
"rand",
]
[[package]]
name = "wasi"
version = "0.10.2+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"

7
Cargo.toml Normal file
View File

@ -0,0 +1,7 @@
[package]
name = "raytracing-the-rest-of-your-life"
version = "0.1.0"
edition = "2021"
[dependencies]
rand = "0.8.4"

35
src/main.rs Normal file
View File

@ -0,0 +1,35 @@
use rand::Rng;
fn main() {
let mut inside_circle = 0u64;
let mut inside_circle_stratified = 0u64;
let mut rng = rand::thread_rng();
const SQRT_N: u64 = 10000;
for i in 0..SQRT_N {
for j in 0..SQRT_N {
let mut x: f64 = rng.gen_range(-1.0..=1.0);
let mut y: f64 = rng.gen_range(-1.0..=1.0);
if x * x + y * y < 1.0 {
inside_circle += 1;
}
x = (2.0f64 * (i as f64 + rng.gen::<f64>()) / SQRT_N as f64) - 1.0;
y = (2.0f64 * (j as f64 + rng.gen::<f64>()) / SQRT_N as f64) - 1.0;
if x * x + y * y < 1.0 {
inside_circle_stratified += 1;
}
}
}
let n = SQRT_N as f64 * SQRT_N as f64;
println!(
"regular estimation = {} stratified estimate = {}",
4.0 * inside_circle as f64 / n,
4.0 * inside_circle_stratified as f64 / n
);
}