1use coco_sys::coco_random_state_t;
2
3pub struct RandomState {
5 pub(crate) inner: *mut coco_random_state_t,
6}
7
8impl RandomState {
9 pub fn new(seed: u32) -> Self {
11 let inner = unsafe { coco_sys::coco_random_new(seed) };
12
13 RandomState { inner }
14 }
15
16 pub fn normal(&mut self) -> f64 {
18 unsafe { coco_sys::coco_random_normal(self.inner) }
19 }
20
21 pub fn uniform(&mut self) -> f64 {
23 unsafe { coco_sys::coco_random_uniform(self.inner) }
24 }
25}
26
27impl Drop for RandomState {
28 fn drop(&mut self) {
29 unsafe {
30 coco_sys::coco_random_free(self.inner);
31 }
32 }
33}