随机字符发生器,范围为(A..Z,0..9)和标点符号

时间:2010-06-24 23:19:37

标签: java android random

我需要创建一个返回单个字符的随机字符生成器。字符应该在字母表的字母范围内,数字0到9,以及一些字符,如。?/ - 。任何一个例子将不胜感激。

9 个答案:

答案 0 :(得分:39)

最简单的方法是执行以下操作:

  • 使用您想要的字符创建String alphabet
  • N = alphabet.length()
  • 然后我们可以向java.util.Random询问int x = nextInt(N)
  • alphabet.charAt(x)是字母
  • 中的随机字符

以下是一个例子:

    final String alphabet = "0123456789ABCDE";
    final int N = alphabet.length();

    Random r = new Random();

    for (int i = 0; i < 50; i++) {
        System.out.print(alphabet.charAt(r.nextInt(N)));
    }

答案 1 :(得分:10)

见以下链接: http://www.asciitable.com/

public static char randomSeriesForThreeCharacter() {
    Random r = new Random();
    char random_3_Char = (char) (48 + r.nextInt(47));
    return random_3_Char;
}

现在你可以在一次调用时生成一个角色。

答案 2 :(得分:4)

  1. 在[0,x)之间选择一个随机数,其中x是不同符号的数量。希望选择是统一选择的,而且不可预测: - )

  2. 现在选择代表x的符号。

  3. 利润!

  4. 我会开始阅读Pseudorandomness,然后是一些常见的Pseudo-random number generators。当然,您的语言有希望已经具有合适的“随机”功能: - )

答案 3 :(得分:3)

以下是安全,简单但有点贵的会话标识符的代码。

import java.security.SecureRandom;
import java.math.BigInteger;

public final class SessionIdentifierGenerator
{

  private SecureRandom random = new SecureRandom();

  public String nextSessionId()
  {
    return new BigInteger(130, random).toString(32);
  }

}

答案 4 :(得分:2)

为什么重新发明轮子? Apache Commons的RandomStringUtils具有可以指定生成字符的字符集的函数。您可以将所需内容带到您的应用中:

http://kickjava.com/src/org/apache/commons/lang/RandomStringUtils.java.htm

答案 5 :(得分:1)

你应该首先制作一个包含你想要的所有字母/数字的字符串 然后,做一个随机。即G。 Random rnd = new Random;
最后,制作一些实际上从包含您的字母表的字符串中获取随机字符的内容 例如,

import java.util.Random;

public class randomCharacter {
    public static void main(String[] args) {
        String alphabet = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ?/.,";
        Random rnd = new Random();
        char char = alphabet.charAt(rnd.nextInt(alphabet.length()));
        // do whatever you want with the character
    }
}

请参阅this 这是我从中得到这些信息的地方。

答案 6 :(得分:0)

使用一些简单的命令行(bash脚本):

$ cat /dev/urandom | tr -cd 'a-z0-9,.?/\-' | head -c 30 | xargs
t315,qeqaszwz6kxv?761rf.cj/7gc

$ cat /dev/urandom | tr -cd 'a-z0-9,.?/\-' | head -c 1 | xargs
f
  • cat / dev / urandom:从内核中获取随机的char流
  • tr:只保留我们想要的char char
  • head:只选择第一个n字符
  • xargs:仅用于添加'\n'字符

答案 7 :(得分:0)

Random random = new Random();
int n = random.nextInt(69) + 32;
if (n > 96) {
    n += 26;
}
char c = (char) n;

我想这取决于您要包含哪个标点符号,但这应该生成一个随机字符,包括此ASCII表上的所有标点符号。基本上,我已经从32 - 96或123 - 126生成了一个随机int,然后我将其转换为char,它给出了相当于该数字的ASCII。另外,请确保import java.util.Random

答案 8 :(得分:0)

随机字符              package com.company;

         import java.util.concurrent.ThreadLocalRandom;

         public class Main {

            public static void main(String[] args) {
            // write your code here
                char hurufBesar =randomSeriesForThreeCharacter(65,90);
                char angka = randomSeriesForThreeCharacter(48,57);
                char simbol = randomSeriesForThreeCharacter(33,47);
                char hurufKecil= randomSeriesForThreeCharacter(97,122);
                char angkaLagi = randomSeriesForThreeCharacter(48,57);

                System.out.println(hurufBesar+" "+angka+" "+simbol+" "+hurufKecil+" "+angkaLagi);
            }

            public static char randomSeriesForThreeCharacter(int min,int max) {
                int randomNumber = ThreadLocalRandom.current().nextInt(min, max + 1);
                char random_3_Char = (char) (randomNumber);
                return random_3_Char;
             }
         }