我想输入一个字母或数字并生成一个随机输出(字母或数字)。对于相同的输入,输出也应始终相同。有人可以指导我如何在这个特定范围内生成这个随机输出。
答案 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]]);
}
}
你可以很好地使用哈希表。