生成随机字母

时间:2012-02-22 10:17:57

标签: java random

我想输入一个字母或数字并生成一个随机输出(字母或数字)。对于相同的输入,输出也应始终相同。有人可以指导我如何在这个特定范围内生成这个随机输出。

3 个答案:

答案 0 :(得分:2)

首先,我将使String输入的情况等效于具有整数的情况:我能想到的最简单的方法是使用str.hashCode() Java中的每个对象定义此方法,这是非常简单的方法从任何类型的输入生成一个整数。

所以现在假设您必须基于单个给定的整数种子生成随机字符串。你可以这样做:

public String  generateString(int seed) {
   Random rnd = new Random(12);
   int len = 10 + rnd.nextInt()  % 20; // achieving random string length in [10, 30)
   StringBuilder sb = new StringBuilder(); // here we will build the string
   for (int i = 0; i < len; i++) {
        sb.append(32 + (char) rnd.nextInt() % 94); // displayable ASCIs are between 32 and 127
   }
   return sb.toString();
}

答案 1 :(得分:1)

随机输出的点是“随机性”,如果你想要一个为同一输入生成相同输出的方法,那么它根本不是随机的。

如果您只想要一个输入的方法 - &gt; (在这里做的事) - &gt;产量 对于任何输入'i',输出'o'是固定的 比如,如果你给1输入你总是得到247(或任何其他数字) 然后只需要组成任何数学公式(例如(sin(x)* 73)/ 43或tan(x)如果你不想重复输出)你的输入中有'x',这将产生一个'貌似'任何输入的无关输出,对于任何给定的数字,将始终固定。

答案 2 :(得分:0)

如果我理解你是对的,也许这就是你想要的。

import java.util.Random;
class t
{
    public static void main(String[] args)
    {
        Random rand = new Random(100);

        char[] alpha = new char[26];    //to store alpahbets
        int[] rlist = new int[26];      //to store random numbers


        for (int j = 0; j<26; j++)
        {
            alpha[j] = (char)(j+97);
            rlist[j] = rand.nextInt(10);
            System.out.println(rlist[j]);
        }

        //input
        char input = 'a';
        //output
        int loc = (int)input-97;
        System.out.println(alpha[rlist[loc]]);
    }
}

你可以很好地使用哈希表。