sim: Migrate main sim to rand 0.7

Adapt to the API changes that have happened in recent versions of the
rand crate.

Signed-off-by: David Brown <david.brown@linaro.org>
diff --git a/sim/src/image.rs b/sim/src/image.rs
index 174904f..a44aadb 100644
--- a/sim/src/image.rs
+++ b/sim/src/image.rs
@@ -15,8 +15,8 @@
     warn,
 };
 use rand::{
-    distributions::{IndependentSample, Range},
-    Rng, SeedableRng, XorShiftRng,
+    Rng, RngCore, SeedableRng,
+    rngs::SmallRng,
 };
 use std::{
     collections::HashSet,
@@ -1067,8 +1067,7 @@
         let mut resets = vec![0i32; count];
         let mut remaining_ops = total_ops;
         for i in 0 .. count {
-            let ops = Range::new(1, remaining_ops / 2);
-            let reset_counter = ops.ind_sample(&mut rng);
+            let reset_counter = rng.gen_range(1, remaining_ops / 2);
             let mut counter = reset_counter;
             match c::boot_go(&mut flash, &self.areadesc, Some(&mut counter), false) {
                 (0, _) | (-0x13579, _) => (),
@@ -1626,8 +1625,13 @@
 
 // Drop some pseudo-random gibberish onto the data.
 fn splat(data: &mut [u8], seed: usize) {
-    let seed_block = [0x135782ea, 0x92184728, data.len() as u32, seed as u32];
-    let mut rng: XorShiftRng = SeedableRng::from_seed(seed_block);
+    let mut seed_block = [0u8; 16];
+    let mut buf = Cursor::new(&mut seed_block[..]);
+    buf.write_u32::<LittleEndian>(0x135782ea).unwrap();
+    buf.write_u32::<LittleEndian>(0x92184728).unwrap();
+    buf.write_u32::<LittleEndian>(data.len() as u32).unwrap();
+    buf.write_u32::<LittleEndian>(seed as u32).unwrap();
+    let mut rng: SmallRng = SeedableRng::from_seed(seed_block);
     rng.fill_bytes(data);
 }