snippetrustModerate
How can I generate a random number within a range in Rust?
Viewed 0 times
howrandomcangeneraterustnumberrangewithin
Problem
Editor's note: This code example is from a version of Rust prior to 1.0 and is not syntactically valid Rust 1.0 code. Updated versions of this code produce different errors, but the answers still contain valuable information.
I came across the following example of how to generate a random number using Rust, but it doesn't appear to work. The example doesn't show which version of Rust it applies to, so perhaps it is out-of-date, or perhaps I got something wrong.
When I attempt to compile this, the following error results:
There is another example (as follows) on the same page (above) that does work. However, it doesn't do exactly what I want, although I could adapt it.
How can I generate a "simple" random number using Rust (e.g.:
I came across the following example of how to generate a random number using Rust, but it doesn't appear to work. The example doesn't show which version of Rust it applies to, so perhaps it is out-of-date, or perhaps I got something wrong.
// http://static.rust-lang.org/doc/master/std/rand/trait.Rng.html
use std::rand;
use std::rand::Rng;
fn main() {
let mut rng = rand::task_rng();
let n: uint = rng.gen_range(0u, 10);
println!("{}", n);
let m: float = rng.gen_range(-40.0, 1.3e5);
println!("{}", m);
}When I attempt to compile this, the following error results:
test_rand002.rs:6:17: 6:39 error: type @mut std::rand::IsaacRng does not
implement any method in scope named gen_range
test_rand002.rs:6 let n: uint = rng.gen_range(0u, 10);
^~~~~~~~~~~~~~~~~~~~~~
test_rand002.rs:8:18: 8:46 error: type @mut std::rand::IsaacRng does not
implement any method in scope named gen_range
test_rand002.rs:8 let m: float = rng.gen_range(-40.0, 1.3e5);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
There is another example (as follows) on the same page (above) that does work. However, it doesn't do exactly what I want, although I could adapt it.
use std::rand;
use std::rand::Rng;
fn main() {
let mut rng = rand::task_rng();
let x: uint = rng.gen();
println!("{}", x);
println!("{:?}", rng.gen::());
}How can I generate a "simple" random number using Rust (e.g.:
i64) within a given range (e.g.: 0 to n)?Solution
Editor's note: This answer is for a version of Rust prior to 1.0 and is not valid in Rust 1.0. See Manoel Stilpen's answer instead.
This has been changing a lot recently (sorry! it's all been me), and in Rust 0.8 it was called
A word of warning:
Code for master (where
This has been changing a lot recently (sorry! it's all been me), and in Rust 0.8 it was called
gen_integer_range (note the /0.8/ rather than /master/ in the URL, if you are using 0.8 you need to be reading those docs).A word of warning:
.gen_integer_range was entirely incorrect in many ways, the new .gen_range doesn't have incorrectness problems.Code for master (where
.gen_range works fine):use std::rand::{task_rng, Rng};
fn main() {
// a number from [-40.0, 13000.0)
let num: f64 = task_rng().gen_range(-40.0, 1.3e4);
println!("{}", num);
}Code Snippets
use std::rand::{task_rng, Rng};
fn main() {
// a number from [-40.0, 13000.0)
let num: f64 = task_rng().gen_range(-40.0, 1.3e4);
println!("{}", num);
}Context
Stack Overflow Q#19671845, score: 28
Revisions (0)
No revisions yet.