鱼C论坛

 找回密码
 立即注册
查看: 3019|回复: 3

[已解决]生成随机的字母

[复制链接]
发表于 2018-11-2 11:11:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
char ch = (char)( Math.random() * 26 + 'A' );        
                
ch += (int)( Math.random() * 2 ) * ( 'a' - 'A' );
这两句能生成随机的字母,看不懂,求解
最佳答案
2018-12-15 17:51:45
两张图解决你的困惑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-2 11:39:29 | 显示全部楼层
第一个:
Math.random() 的返回值是[0,1)的随机数,*26后其范围为[0~26) 左闭右开区间
'B'的ASCII码值比'A'的ASCII的值大1,
'Z'的ASCII码值比'A'的ASCII的值大25.

'A'+[0,26) = ['A','Z'+1)
取不到'Z'+1,上限值只能取到'Z'
所以char ch = (char)( Math.random() * 26 + 'A' );   
执行完毕后
ch 可以取到 'A'~'Z'



第二个略,需要查一下ASCII码表。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-2 11:39:30 | 显示全部楼层
由于ascii码中,大写字母排在小写字母前面,中间还隔了一些其他字符
这两行代码是先生成一个大写字符,再随机判断生成该字母的大写形式或者小写形式,Math.random()*2无非就是0或1,0就是大写,1就是小写(就是加上了中间隔的字符的数量,得到对应小写字母的ascii码)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-15 17:51:45 | 显示全部楼层    本楼为最佳答案   
两张图解决你的困惑
a.png
B.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 05:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表