生成随机字母和固定数字组合
generate random letter and fixed number combination
我需要生成单个字母和 6 位数字组合的随机序列,示例:F841257
我正在查看 rand
箱子,但有些东西不太管用。
extern crate rand;
fn main() {
println!("{:?}", rand::random::<char>());
}
打印类似 '\u{6ae02}'
的东西,而 println!("{}", rand::random::<char>());
产生一些奇怪的字形。
有人可以指出我如何实现这一目标的正确方向吗?
首先,一个工作程序:
extern crate rand;
use rand::Rng;
fn main() {
let mut rng = rand::thread_rng();
let letter: char = rng.gen_range(b'A', b'Z') as char;
let number: u32 = rng.gen_range(0, 999999);
let s = format!("{}{:06}", letter, number);
println!("{}", s);
}
接下来是解释。
rand::random::<char>()
returns 是整个 char
范围内的一个随机值,也就是说,它可能 return 任意 Unicode 代码点。这就是为什么您会看到奇怪的字形 - 这些可能是来自上层 Unicode 平面的值。
您需要定义您需要生成的内容的边界。首先,您需要一个字母,然后您需要六位数字。字母是'A'和'Z'之间的任意字符,六位数字可以用0到999999的数字表示,打印时用零填充。
所以,首先,我们生成一个u8
,对应ASCII中的一个字母,并将其转换为char
(不幸的是,rand
crate不提供[=的范围分布12=]s,所以我们必须使用这样的间接寻址)。
其次,我们生成一个介于 0 和 999999 之间的 u32
。
然后我们以所需的格式打印它们。以下是该程序生成的一些值:V285490、Y865809、A704620。
我需要生成单个字母和 6 位数字组合的随机序列,示例:F841257
我正在查看 rand
箱子,但有些东西不太管用。
extern crate rand;
fn main() {
println!("{:?}", rand::random::<char>());
}
打印类似 '\u{6ae02}'
的东西,而 println!("{}", rand::random::<char>());
产生一些奇怪的字形。
有人可以指出我如何实现这一目标的正确方向吗?
首先,一个工作程序:
extern crate rand;
use rand::Rng;
fn main() {
let mut rng = rand::thread_rng();
let letter: char = rng.gen_range(b'A', b'Z') as char;
let number: u32 = rng.gen_range(0, 999999);
let s = format!("{}{:06}", letter, number);
println!("{}", s);
}
接下来是解释。
rand::random::<char>()
returns 是整个 char
范围内的一个随机值,也就是说,它可能 return 任意 Unicode 代码点。这就是为什么您会看到奇怪的字形 - 这些可能是来自上层 Unicode 平面的值。
您需要定义您需要生成的内容的边界。首先,您需要一个字母,然后您需要六位数字。字母是'A'和'Z'之间的任意字符,六位数字可以用0到999999的数字表示,打印时用零填充。
所以,首先,我们生成一个u8
,对应ASCII中的一个字母,并将其转换为char
(不幸的是,rand
crate不提供[=的范围分布12=]s,所以我们必须使用这样的间接寻址)。
其次,我们生成一个介于 0 和 999999 之间的 u32
。
然后我们以所需的格式打印它们。以下是该程序生成的一些值:V285490、Y865809、A704620。