Pregunta Genera un u8 aleatorio de 0 a 255 inclusive


Estoy tratando de hacer un programa que genere números aleatorios de 0 a 255 inclusive. ¡Parece tan simple! Hice esto:

extern crate rand;
use rand::Rng;

fn main() {
    println!("Guess the number!");
    let random_number: u8 = rand::thread_rng().gen_range(0, 255);

    println!("Your random number is {}", random_number);
}

Esto funciona bien, pero el problema con este enfoque es que el número 255 no será incluido:

los gen_range método toma dos números como argumentos y genera un número aleatorio entre ellos. Es inclusivo en el límite inferior pero exclusivo en el límite superior.

Cuando trato de hacer esto:

let random_number: u8 = rand::thread_rng().gen_range(0, 256);

Rust generará una advertencia porque u8 solo acepta valores de 0 a 255.

warning: literal out of range for u8
 --> src/main.rs:6:61
  |
6 |     let random_number: u8 = rand::thread_rng().gen_range(0, 256);
  |                                                             ^^^
  |
  = note: #[warn(overflowing_literals)] on by default

¿Cómo puedo solucionar esto sin tener que cambiar el tipo de random_number ¿variable?


7
2017-12-09 00:24


origen


Respuestas:


Utilizar el gen método en su lugar. Este método generará un valor aleatorio a partir de todo el conjunto de valores posibles para el tipo especificado.

extern crate rand;

use rand::Rng;

fn main() {
    println!("Guess the number!");
    let random_number: u8 = rand::thread_rng().gen();

    println!("Your random number is {}", random_number);
}

6
2017-12-09 00:29