Logo

Programming-Idioms

This language bar is your friend. Select your favorite languages!
  • Rust
use rand::{self, Rng};
x[rand::thread_rng().gen_range(0..x.len())]

gen_range returns a number between 0 (inclusive) and x.len() (exclusive)
use rand::seq::SliceRandom;
let mut rng = rand::thread_rng();
let choice = x.choose(&mut rng).unwrap();

The choose method returns an Option which is None if x is empty.
with Ada.Numerics.Discrete_Random;
subtype Element_Type is Integer;
type List_Type is array (Positive range <>) of Element_Type;

function Pick_Random (X : List_Type) return Element_Type is
   subtype Index_Range  is Positive range X'Range;
   package Random_Index is new
     Ada.Numerics.Discrete_Random (Index_Range);
   Generator : Random_Index.Generator;
begin
   Random_Index.Reset (Generator);
   return X (Random_Index.Random (Generator));
end Pick_Random;

New implementation...