如果我想在a和z之间随机选择一个字母,我假设我必须使用Random
类:
Random rand = new Random();
但由于这只会生成数字,我需要做些什么来将其应用于字母?
答案 0 :(得分:23)
Random r = new Random();
char c = (char) (r.nextInt(26) + 'a');
答案 1 :(得分:4)
字母,或者更确切地说,字符是数字(在扩展的ascii中从0到255,在非扩展中从0到127)。例如,在ASCII中,'A'(引用意味着字符,而不是字符串)是65.所以1 +'A'会给你66 - 'B'。 所以,你可以从0到26取一个随机数,将它添加到字符'a',这里你是:随机字母。
你也可以用一个字符串来做,键入“abcdefghijklmnopqrstuvwxyz”并在这个链中取一个随机位置,但是Barker解决方案更优雅。
答案 2 :(得分:3)
改变@Michael Barker的版本
Random r = new Random();
int c = r.nextInt(26) + (byte)'a';
System.out.println((char)c);
答案 3 :(得分:2)
char randomLetter = (char) ('a' + Math.random() * ('z'-'a' + 1));
答案 4 :(得分:1)
import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
...
randomAlphabetic(1).toLowerCase()
这会为您提供一个包含单个字符的字符串
答案 5 :(得分:1)
要从(a-z)中随机选择一个字母,我会执行以下操作:
Random rand = new Random();
...
char c = rand.nextInt(26) + 'a';
由于 Random.nextInt()会生成0到25之间的值,因此您只需添加'a'的偏移量即可生成小写字母。
答案 6 :(得分:1)
为什么要假设使用Random而不是Math.random?您甚至可以使代码更短...
function draw() {
var texWidth=800;
var texHeight=600;
gl.clearColor(0.0, 0.0, 0.0, 1.0);
//get variable of Uint8Array from C++ Native Addon
pixels = myaddon.get();
texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, texture);
//Crash here
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, texWidth, texHeight, 0, gl.RGBA, gl.UNSIGNED_BYTE,pixels);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
gl.bindTexture(gl.TEXTURE_2D, null);
gl.clear(gl.COLOR_BUFFER_BIT);
gl.useProgram(program);
gl.activeTexture(gl.TEXTURE0);
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.uniform1i(uniforms['u_texture'], 0);
gl.drawArrays(gl.TRIANGLES, 0, 6);
}
答案 7 :(得分:0)
使用字母的ascii值生成随机数。
答案 8 :(得分:0)
Random r = new Random();
char symbel = (char)(r.nextInt(26) + 'a');
if(symbel>='a' && symbel <= 'z') {
System.out.println("Small Letter" + symbel);
} else {
System.out.println("Not a letter" + symbel);
}