如何在Rust中随机为flag赋值'D'或'C'?技术求助
解决随机赋值'C'或'D'的问题
你原来的代码问题在于gen_range(b'A', b'Z')是从所有大写字母里随机选一个,范围覆盖了A到Z所有字符,自然没法精准得到C或D。
给你两个简便的实现方法:
方法一:从指定字符数组中随机选取
直接定义包含'C'和'D'的数组,用rand库的方法随机选一个:
use rand::Rng; fn main() { let mut rng = rand::thread_rng(); let flag: char = ['C', 'D'].choose(&mut rng).unwrap(); println!("{}", flag); }
choose方法会从数组里随机挑一个元素,unwrap()是因为数组非空,不会出现错误。
方法二:通过随机布尔值映射字符
先生成概率各50%的布尔值,再对应到C或D:
use rand::Rng; fn main() { let mut rng = rand::thread_rng(); let flag: char = if rng.gen_bool(0.5) { 'C' } else { 'D' }; println!("{}", flag); }
注意:使用rand库需要在Cargo.toml里添加依赖:
[dependencies] rand = "0.8"
内容的提问来源于stack exchange,提问作者Cult of Tranquility
相关产品推荐
相关产品推荐

