Примечание редактора: Этот пример кода относится к версии Rust до 1.0 и не является синтаксически верным кодом Rust 1.0. Обновленные версии этого кода вызывают разные ошибки, но ответы по-прежнему содержат ценную информацию.
Я наткнулся на следующий пример того, как генерировать случайное число с помощью Rust, но, похоже, оно не работает. В примере не показано, к какой версии Rust она применяется, поэтому, возможно, она устарела, или, возможно, я что-то не так понял.
// 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);
}
Когда я пытаюсь скомпилировать это, возникает следующая ошибка:
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);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
Есть другой пример (как показано ниже) на той же странице (выше), который работает. Тем не менее, это не совсем то, что я хочу, хотя я мог бы адаптировать его.
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::<(f64, bool)>());
}
Как я могу сгенерировать "простое" случайное число, используя Rust (например, i64
) в заданном диапазоне (например, от 0 до n)?