Skip to main content

AdaptiveMcReportV1

Struct AdaptiveMcReportV1 

Source
pub struct AdaptiveMcReportV1 {
Show 19 fields pub schema_version: u32, pub method: String, pub assumptions: Vec<String>, pub confidence_percent: u32, pub hit_probability: f64, pub ci_low: f64, pub ci_high: f64, pub samples: u64, pub attempts: u64, pub arrivals: u64, pub stop_reason: McStopReason, pub hit_radius_m: f64, pub target_distance_m: f64, pub mean_impact_velocity_mps: f64, pub std_impact_velocity_mps: f64, pub mean_drop_at_target_m: f64, pub std_drop_at_target_m: f64, pub mean_wind_drift_at_target_m: f64, pub std_wind_drift_at_target_m: f64,
}
Expand description

The result of a confidence-controlled Monte Carlo run.

Produced by run_monte_carlo_adaptive_seeded. Unlike MonteCarloResults this retains no per-trial data at all: the continuous quantities arrive as streaming Welford moments and the hit/miss counts as a running confidence sequence, so a 100,000-trial run costs the same memory as a 1,000-trial one.

Fields§

§schema_version: u32§method: String§assumptions: Vec<String>

Always the four sentences of MC_ADAPTIVE_ASSUMPTIONS_V1, in order.

§confidence_percent: u32

Confidence level of ci_low/ci_high, as a whole-number percentage.

§hit_probability: f64

Point estimate S / n: hits over all trials, including trials that never reached the target plane.

§ci_low: f64

Lower bound of the anytime-valid interval.

§ci_high: f64

Upper bound of the anytime-valid interval.

§samples: u64

Trials actually folded into the statistics (n).

§attempts: u64

Trials drawn, including any the solver could not complete.

attempts - samples is the drop count. It is normally zero, and equals samples whenever it is – but without this field a run with a 40% solver-failure rate is indistinguishable in the payload from a clean one at the same samples, which is the one thing samples alone cannot tell you. attempts is also what McConvergence::max_samples caps, so McStopReason::MaxSamplesReached always has attempts == max_samples – but the reverse does not hold: a McStopReason::TargetHalfWidthMet stop on the very last batch can reach the same equality, so attempts == max_samples alone does not identify the stop reason.

§arrivals: u64

Trials that reached the target plane – the population behind the three at-target statistics below, and the n in their n-1 standard deviations.

This is the magnitude behind the asymmetry assumptions[3] discloses qualitatively: mean_drop_at_target_m, mean_wind_drift_at_target_m and mean_impact_velocity_mps describe these arrivals trials, while hit_probability is over all samples (a trial that fell short is a definite miss, so it is in that denominator but has no measured position to contribute). With arrivals well below samples, the at-target statistics describe only part of the run and this field is what says so.

The fixed-count path exposes the same information as MonteCarloResults::target_arrival_count and MonteCarloResults::target_shortfall_fraction; samples - arrivals is the shortfall count and 1 - arrivals / samples the shortfall fraction.

§stop_reason: McStopReason

Why the run stopped. Serializes as "target_half_width_met" / "max_samples_reached".

§hit_radius_m: f64

Hit-zone radius the probability was computed against.

§target_distance_m: f64

Resolved target plane: params.target_distance if given, else the baseline’s max range.

§mean_impact_velocity_mps: f64

Mean ground-impact velocity over trials that reached the target plane.

The velocity is the one the legacy path records: speed at ground impact, not at the target plane (MBA-967). Only the conditioning is on reaching the plane.

§std_impact_velocity_mps: f64

Sample (n-1) standard deviation of the above. 0.0 for fewer than two such trials.

§mean_drop_at_target_m: f64

Mean vertical deviation from the baseline point of aim at the target plane, in meters, positive high.

Named “drop” for continuity with the rest of the API, but it is a deviation from the undispersed baseline, not a drop from the bore line: with symmetric input dispersions its expectation is near zero and the informative number is std_drop_at_target_m.

§std_drop_at_target_m: f64

Sample (n-1) standard deviation of the vertical deviation – the run’s vertical dispersion at the target.

§mean_wind_drift_at_target_m: f64

Mean lateral deviation from the baseline point of aim at the target plane, in meters. The same “deviation, not absolute” caveat as mean_drop_at_target_m applies.

§std_wind_drift_at_target_m: f64

Sample (n-1) standard deviation of the lateral deviation – the run’s horizontal dispersion at the target.

Trait Implementations§

Source§

impl Clone for AdaptiveMcReportV1

Source§

fn clone(&self) -> AdaptiveMcReportV1

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for AdaptiveMcReportV1

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Serialize for AdaptiveMcReportV1

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.