Wie kann ich eine Zufallszahl erzeugen in einem Bereich in Rust?

Anmerkung der Redaktion: Dieses code-Beispiel ist aus einer version von Rust vor 1.0 und nicht syntaktisch gültig Rust 1.0-code. Aktualisierte Versionen dieses Codes erzeugen andere Fehler, aber die Antworten, die immer noch wertvolle Informationen.

Stieß ich auf das folgende Beispiel zum erzeugen einer Zufallszahl mit Rost, aber es scheint nicht zu funktionieren. Das Beispiel zeigt nicht an, welche version von Rust, die es gilt zu ist, ist es vielleicht out-of-date, oder vielleicht habe ich etwas falsch.

//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);
}

Wenn ich versuche zu kompilieren folgende Fehlermeldung angezeigt:

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);
                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~

Es ist ein weiteres Beispiel (wie folgt) auf der gleichen Seite (oben), das funktioniert. Jedoch, es nicht zu tun genau das, was ich möchte, obwohl ich könnte es anpassen.

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)>());
}

Wie kann ich das erzeugen einer "einfachen" random-Nummer mit Rost (z.B.: i64) innerhalb eines bestimmten Bereichs (z.B.: 0 bis n)?

InformationsquelleAutor Brian Oh | 2013-10-30
Schreibe einen Kommentar