sig
  val foldi : init:'-> 'b array -> f:(int -> '-> '-> 'a) -> 'a
  val random_split :
    ?random_state:Random.State.t ->
    p:float -> 'a array -> 'a array * 'a array
  val random_sub :
    ?random_state:Random.State.t -> p:float -> 'a array -> 'a array
end